Balanced Binary Tree
LeetCode #110
Description:
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.
Example:
Note
Idea:
return either -1 (inbalanced) or the height of the tree(subtree).
- left subtree and right subtree both need to be balanced. If one is not balanced, return -1.
- Then also compare the the height of left and right tree.
- If all good, return the depth at this node.
Code:
class Solution {
public:
bool isBalanced(TreeNode* root) {
if(balancedHeight(root)==-1)
return false;
else
return true;
}
int balancedHeight(TreeNode *root){
if(root==NULL) return 0;
int left_depth = balancedHeight(root->left);
int right_depth = balancedHeight(root->right);
if(left_depth==-1 || right_depth==-1|| abs(left_depth-right_depth)>1) return -1;
return max(left_depth, right_depth) + 1;
}
};