题目描述
![](https://img-blog.csdnimg.cn/img_convert/1e218c1057933e381c5329c85ce0fd68.png)
题解
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
int getHeight(struct TreeNode* root){
if(root == NULL){
return 0;
}
int LH = getHeight(root->left);
int RH= getHeight(root->right);
if(RH > LH){
return RH+1;
}else{
return LH+1;
}
}
bool isBalanced(struct TreeNode* root){
if(root == NULL){
return true;
}
if(isBalanced(root->left)&&isBalanced(root->right)){
int i = getHeight(root->left);
int j = getHeight(root->right);
if(i==j || i==j+1 || j==i+1){
return true;
}
}
return false;
}
要点
判断二叉树是否是平衡二叉树只需满足两个条件:
①左右子树都是平衡二叉树。
②左右子树的高度相差不为一。
2.考虑树的问题通常转换为:考虑一般结点的情景+考虑叶结点的情景。