Balanced Binary Tree

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);
    }
};
原文地址:https://www.cnblogs.com/happygirl-zjj/p/4590617.html