递归检查root的左右孩子是不是平衡树。如果没有,下面这个树也会被认为是平衡树了。
class Solution {
public:
/*
此处算的高度都只是树的最大高度,左右子树最大高度相同,不代表这棵树就是平衡的,还要再对子树分别判断。
*/
int getDepth(TreeNode* root)
{
if(!root)
{
return 0;
}
return 1+max(getDepth(root->left),getDepth(root->right));
}
bool IsBalanced_Solution(TreeNode* root) {
if(!root)
return true;
int left=getDepth(root->left);
int right=getDepth(root->right);
if(abs(left-right)>1)
{
return false;
}
return IsBalanced_Solution(root->left)&&IsBalanced_Solution(root->right);
}
};
京公网安备 11010502036488号