LeetCode/solutions/110. Balanced Binary Tree.md

695 B
Raw Blame History

110. Balanced Binary Tree

思路

一棵非空树是平衡二叉树的充要条件是:

  • 其左右子树的高相差不超过1
  • 且左右子树都是平衡二叉树。

因此是一个递归算法。

C++

class Solution {
private:
    int getDepth(TreeNode *root){
        if(root == NULL) return 0;
        return 1 + max(getDepth(root -> left), getDepth(root -> right));
    }
public:
    bool isBalanced(TreeNode* root) {
        if(root == NULL) return true;
        return (abs(getDepth(root -> left) - getDepth(root -> right)) <= 1) && isBalanced(root -> left) && isBalanced(root -> right);
    }
};