Balanced Binary Tree
问题描述:给定一个二叉树,判断它是否是平衡二叉树。
问题解决:平衡二叉树的定义是对于一棵二叉树,它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。这个定义的描述很容易联想到递归。
class Solution {
public:
bool isBalanced(TreeNode* root) {
//如果是一棵空树
if(!root) return true;
//如果左右子树的高度差的绝对值大于1
if(abs(height(root->left)-height(root->right))>1)
return false;
//左右子树是否是平衡二叉树
else
return isBalanced(root->left)&&isBalanced(root->right);
}
//求解树的高度
int height(TreeNode* root)
{
if(!root) return 0;
return 1+max(height(root->left),height(root->right));
}
};