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.
Code:
1 int height( TreeNode * root ) 2 { 3 if ( root == NULL ) 4 return 0; 5 else 6 return max( height( root->left ), height( root->right) ) + 1; 7 } 8 9 bool isBalanced(TreeNode* root) { 10 if ( root == NULL ) 11 return true; 12 13 if ( abs(height(root->left)-height(root->right)) > 1 ) 14 return false; 15 else 16 return isBalanced( root->left ) && isBalanced( root->right ); 17 }
Code2:
class Solution { public: bool isBalance(TreeNode* pRoot, int&height){ if (pRoot == NULL){ height = 0; return true; } bool isLeftBalance,isRightBalance; int leftH, rightH; isLeftBalance = isBalance(pRoot->left, leftH); isRightBalance = isBalance(pRoot->right, rightH); height = max(leftH, rightH)+1; if (isLeftBalance && isRightBalance && abs(leftH-rightH) <= 1) return true; return false; } bool IsBalanced_Solution(TreeNode* pRoot) { int height; return isBalance(pRoot, height); } };