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; } };
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.