110.Balanced Binary Tree(Easy)

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.

递归,求左右是否平衡,再判断高度差

/**
 * Definition for binary tree
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution {
public:
    
    bool checkBalance(TreeNode *node, int &dep)
     {
         if (node == NULL)
       {
            dep = 0;
             return true;
         }
         
         int leftDep, rightDep;
         bool leftBalance = checkBalance(node->left, leftDep);
         bool rightBalance = checkBalance(node->right, rightDep);
         
         dep = max(leftDep, rightDep)+1;
         
         return leftBalance && rightBalance && (abs(rightDep - leftDep) <= 1);
     }
    bool isBalanced(TreeNode *root) {
         int dep;
         return checkBalance(root, dep);
        
    }
};

  

原文地址:https://www.cnblogs.com/qiaozhoulin/p/4509899.html