平衡二叉树
给定一个二叉树,确定它是高度平衡的。对于这个问题,一棵高度平衡的二叉树的定义是:一棵二叉树中每个节点的两个子树的深度相差不会超过1。
先求左子树和右子树的最大深度,然后判断是否相差大于1,如果是,则不可能是,如果相差小于,继续递归调用判断左子树和右子树是否都是平衡二叉树。
代码实现
bool isBalanced(TreeNode *root) {
// write your code here
if(root == NULL)
return true;
int leftDepth = MaxDepth(root->left);
int rightDepth = MaxDepth(root->right);
if(abs(rightDepth - leftDepth) > 1)
{
return false;
}
else{
return isBalanced(root->left) && isBalanced(root->right);
}
}
int MaxDepth(TreeNode *root){
if(root == NULL)
return false;
int leftDepth = MaxDepth(root->left) + 1;
int rightDepth = MaxDepth(root->right) + 1;
return leftDepth > rightDepth ? leftDepth : rightDepth;
}