问题描述:
Given a binary tree, determine if it is height-balanced.
For this problem, a height-balanced binary tree is defined as a binary tree in which the depth of the two subtrees of every node never differ by more than 1.
判断一个二叉树是否是二叉平衡树,即左右子树高度差不超过一。在之前的求二叉树的深度的基础上(代码见二叉树深度)
遍历每个节点,求其左右子树的深度,然后看深度差是不是小于等于1即可。
AC代码如下:
int TreeDepth(TreeNode * root)
{
if(root == NULL)
return 0;
int left = TreeDepth(root->left);
int right = TreeDepth(root->right);
return (left>right?left+1:right+1);
}
bool isBalanced(TreeNode* root)
{
if(root == NULL)
return true;
int left = TreeDepth(root->left);
int right = TreeDepth(root->right);
int diff = abs(left-right);
if(diff > 1)
return false;
return isBalanced(root->left) && isBalanced(root->right);
}