题目描述
输入一棵二叉树,判断该二叉树是否是平衡二叉树。
解题思路:
通过得出二叉树的高度,从而判断是否为平衡二叉树。
平衡二叉树:
- 是一棵二叉排序树,即二叉搜索树
- 每个结点的左右子树的高度相差不超过1。
平衡二叉树的介绍:关于平衡二叉树
通过flag标志,在求二叉树的高度的时候,比较左右子树的高度相差值是否大于1。
剑指offer中题目:
关于求解树的高度:剑指offer—二叉树的深度
//计算数的高度,并判断是否为平衡二叉树
int getDepth(TreeNode* pRoot,bool &flag){
if(pRoot){
int left_depth = getDepth(pRoot->left,flag);
int right_depth = getDepth(pRoot->right,flag);
if(fabs(left_depth - right_depth) > 1){
flag = false;
}
if(left_depth < right_depth){
return right_depth + 1;
}else{
return left_depth + 1;
}
}
return 0;
}
//平衡二叉树
bool IsBalanced_Solution(TreeNode* pRoot){
if(pRoot == NULL){
return true;
}
bool flag = true;
getDepth(pRoot,flag);
return flag;
}