110. Balanced Binary Tree

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 left and right subtrees of every node differ in height by no more than 1.

 

Example 1:

Input: root = [3,9,20,null,null,15,7]
Output: true

Example 2:

Input: root = [1,2,2,3,3,null,null,4,4]
Output: false

Example 3:

Input: root = []
Output: true

 

Constraints:

  • The number of nodes in the tree is in the range [0, 5000].
  • -104 <= Node.val <= 104

怎样判断一棵根为r的树是否为AVL树??参考花花酱

 

isBalanced(r)=abs(hl-hr)<=1&&isBalanced(r->left)&&isBalanced(r->right)

求树的深度+递归

class Solution {
private:
    int depth(TreeNode* root){
        if(!root) return 0;
        else return 1+max(depth(root->left),depth(root->right));
    }
public:
    bool isBalanced(TreeNode* root) {
        if(!root) return true;
        int hl=depth(root->left);
        int hr=depth(root->right);
        if(abs(hl-hr)<=1&&isBalanced(root->left)&&isBalanced(root->right))
            return true;
        return false;
        
    }
};
View Code
Runtime: 8 ms, faster than 87.83% of C++ online submissions for Balanced Binary Tree.
Memory Usage: 20.9 MB, less than 75.14% of C++ online submissions for Balanced Binary Tree.
posted @ 2021-04-20 15:45  Makerr  阅读(38)  评论(0编辑  收藏  举报