您的位置:首页 > 其它

[leetcode]110. Balanced Binary Tree

2016-10-25 21:34 471 查看
题目链接:https://leetcode.com/problems/balanced-binary-tree/

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.

Solution 1:

class Solution {
public:
bool isBalanced(TreeNode * root)
{
if(root==NULL)
return true;
return run(root);
}

bool run(TreeNode * root)
{
int l=0,r=0;
l=height(root->left);
r=height(root->right);
if(abs(l-r)<=1 && isBalanced(root->left) && isBalanced(root->right))
return true;
return false;
}

int height(TreeNode *root)
{
if(root==NULL)
return 0;
int left=height(root->left);
int right=height(root->right);
return left>right?left+1:right+1;
}
};


Solution 2:

class Solution {
public:
int depth(TreeNode *root) {
if (root == NULL) {
return 0;
}
int left = depth(root->left);
int right = depth(root->right);
if (left == -1 || right == -1 || abs(left - right) > 1) {
return -1;
}
return max(left, right) + 1;
}

/**
* @param root: The root of binary tree.
* @return: True if this Binary tree is Balanced, or false.
*/
bool isBalanced(TreeNode *root) {
return depth(root) != -1;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: