判断二叉树是否平衡
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 everynode never differ by more than 1.
刚开始的时候老往AVL树上靠,后来才知道只需要两个子树的高度 never differ by more than 1,这个就好理解多了。代码如下:
bool balance(TreeNode* root, int& depth)
{
if (root == NULL)
{
depth = 0;
return true;
}
int left_h = 0;
int right_h = 0;
if (!balance(root->right, right_h))
{
return false;
}
if (!balance(root->left, left_h))
{
return false;
}
if (right_h > left_h)
{
depth = right_h + 1;
return (right_h - left_h) <= 1;
}
else
{
depth = left_h + 1;
return (left_h - right_h) <= 1;
}
}

浙公网安备 33010602011771号