判断一颗二叉树是否为平衡树
来源:互联网 发布:java ftp客户端源代码 编辑:程序博客网 时间:2024/06/06 11:37
平衡树是每一颗节点的左右子树高度差不超过1的。
思路:只需要将右子树的高度减去左子树的高度的绝对值不超过2,就是一颗平衡树。
代码:
1.普通版本,时间复杂度为O(N^2)
bool _IsBalance(Node* root) {if(root==NULL)return true;int LeftHeight=_Height(root->_left );int RightHeight=_Height(root->_right );return abs(RightHeight-LeftHeight)<2&&_IsBalance(root->_left )&&_IsBalance(root->_right );}int _Height(Node* root){if(root==NULL)return 0;int LeftH=_Height(root->_left );int RightH=_Height(root->_right );return LeftH>RightH?LeftH+1:RightH+1;}
这样我们就会发现,一直在重复计算树的高度。
2.优化的版本,时间复杂度为O(N)
bool _IsBalanceOp(Node* root,int& Height){int LeftHeight=0;int RightHeight=0;if(root==NULL){return true;Height=0;}if(_IsBalanceOp(root->_left, LeftHeight)==false) //左子树return false;if(_IsBalanceOp(root->_right, RightHeight)==false) //右子树return false;Height=RightHeight>LeftHeight?RightHeight+1:LeftHeight+1;return abs(RightHeight-LeftHeight)<2;}
0 0
- 判断一颗二叉树是否为平衡二叉树
- 判断一颗二叉树是否为平衡二叉树
- 判断一颗二叉树是否为平衡树
- 判断是否为一颗平衡二叉树
- 判断一棵二叉树是否为平衡二叉树
- 判断一颗二叉树是否平衡
- java数据结构-二叉树-判断一颗二叉树是否为平衡二叉树
- 判断一颗二叉树是否为平衡二叉树(AVL)
- 判断一颗二叉树是否是平衡二叉树
- 判断二叉树是否为平衡树
- 判断树是否为平衡二叉树
- 判断二叉树是否为平衡树
- 判断树是否为平衡二叉树
- 判断二叉树是否为平衡树
- 判断树是否为平衡二叉树
- 判断一棵树是否为平衡二叉树
- 判断是否为平衡二叉树
- 判断是否为平衡二叉树
- Linux网络编程——广播
- 如何在caffe中增加layer以及caffe中triplet loss layer的实现
- SqlbulkCopy
- Android Lint 的使用
- 提问的智慧
- 判断一颗二叉树是否为平衡树
- 根据krpano切片还原成全景图
- 北理公开课数组
- [leetcode]110. Balanced Binary Tree
- Android中Transition实现
- codeforces 43A Football
- 一个跟随手指滑动的Button
- @property 装饰器
- Volley中JsonObjectRequest的使用