【算法题】如何判断一个二叉树是平衡二叉树
2015-02-04 15:59
429 查看
[b]在阅读的过程中有任何问题,欢迎一起交流[/b]
邮箱:1494713801@qq.com
QQ:1494713801
题目:如何判断一个二叉树是平衡二叉树
定义:
平衡二叉树(AVL):1、空二叉树是AVL树;
2、如果T是一颗非空的二叉搜索树,TL和TR分别是其左子树和右子树,那么当T满足一下条件时,T是一颗AVL树:(1)TL和TR是AVL树;(2)|HL-HR|《=1,HL和HR分别是左子树和右子树的高度
示例:
算法思想:
采用递归的思想,从root节点进行递归的调用。假设叶子节点的高度是0,分别计算各个节点的左右子树的高度差;若高度差大于1则返回-1(表示不是平衡树)否则返回子树的最大高度加一。
时间复杂度:
T(root) = T(left) + T(right) + O(1)
= T(m->left) + T(m->right) + T(…) + O(1)…
= …O(1) + O(1) = n*O(1) = O(n)
代码实现:
BoolisBalanced(Node* root){
return height(root) >= 0;
}
Int height(Node* root){
if (root == null) return 0;
int left = height(root -> left);
int right = height(root -> right);
if (abs(left,right)>1 || left < 0 || right < 0)
return -1;
else
return max(left, right) + 1;
}
附:关于树的算法一般时间复杂度为O(log2 N)或O(N)
邮箱:1494713801@qq.com
QQ:1494713801
题目:如何判断一个二叉树是平衡二叉树
定义:
平衡二叉树(AVL):1、空二叉树是AVL树;
2、如果T是一颗非空的二叉搜索树,TL和TR分别是其左子树和右子树,那么当T满足一下条件时,T是一颗AVL树:(1)TL和TR是AVL树;(2)|HL-HR|《=1,HL和HR分别是左子树和右子树的高度
示例:
算法思想:
采用递归的思想,从root节点进行递归的调用。假设叶子节点的高度是0,分别计算各个节点的左右子树的高度差;若高度差大于1则返回-1(表示不是平衡树)否则返回子树的最大高度加一。
时间复杂度:
T(root) = T(left) + T(right) + O(1)
= T(m->left) + T(m->right) + T(…) + O(1)…
= …O(1) + O(1) = n*O(1) = O(n)
代码实现:
BoolisBalanced(Node* root){
return height(root) >= 0;
}
Int height(Node* root){
if (root == null) return 0;
int left = height(root -> left);
int right = height(root -> right);
if (abs(left,right)>1 || left < 0 || right < 0)
return -1;
else
return max(left, right) + 1;
}
附:关于树的算法一般时间复杂度为O(log2 N)或O(N)
相关文章推荐
- 如何判断一个二叉树是否为平衡二叉树。
- 求一个二叉树的深度以及如何判断一个二叉树是一个平衡二叉树
- 判断一个二叉树是否是平衡二叉树 Cracking the coding interview 4.1
- 如何判断一个二叉树是否是二叉查找树
- java 判断一个二叉树是不是平衡二叉树
- 【算法】判断一棵二叉树是否是平衡二叉树
- day12之判断一棵二叉树是否是平衡二叉树+求一颗二叉树的镜像+判断一个数在二维数组中是否存在
- 判断一个二叉树是否是平衡二叉树
- 设计一个算法,判断给定的一棵二叉树是否是二叉排序树(二叉树的所有关键字均为正整数)
- 如何判断一个二叉树是否为另一个二叉树的子树
- LeetCode(Balanced Binary Tree ) 判断一个二叉树是否为平衡二叉树
- 判断一个二叉树是否是平衡二叉树(AVL)
- 判断一个二叉树是不是平衡二叉树
- 笔试面试算法经典--判断二叉树是否是平衡二叉树(Java)
- 【算法】判断一颗二叉树是否是平衡二叉树
- 判断一个二叉树是否是平衡二叉树
- [置顶] 【算法】判断二叉树是否是平衡二叉树
- 数据结构之如何判断一棵二叉树是否是平衡二叉树(AVL树)
- 一个算法:关于如何判断两个时间是否在允许误差内相等
- 判断一个二叉树是否是平衡二叉树