您的位置:首页 > 其它

[LeetCode] Balanced Binary Tree 平衡二叉树

2014-12-05 07:34 357 查看
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)左右子树都是平衡树,2)左子树和右子树的高度相差小于1。下面是代码:

bool isBalanced(TreeNode *root) {
int leftH, rightH;
return isBalancedUtil(root, leftH, rightH);
}

bool isBalancedUtil(TreeNode* root, int& leftH, int& rightH)
{// utility function
if(root == NULL)
{
leftH = 0;
rightH = 0;
return true;
}

int leftH1, rightH1, leftH2, rightH2;
if(! isBalancedUtil(root->left, leftH1, rightH1) )
return false;
if(! isBalancedUtil(root->right, leftH2, rightH2) )
return false;

leftH = max(leftH1, rightH1) + 1;
rightH = max(leftH2, rightH2) + 1;
if(abs(leftH-rightH)>1)
return false;
else
return true;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: