判断平衡二叉树

输入一棵二叉树的根节点,判断该树是不是平衡二叉树。如果某二叉树中任意节点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。

 

示例 1:

给定二叉树 [3,9,20,null,null,15,7]

3
/ \
9 20
/ \
15 7
返回 true 。

示例 2:

给定二叉树 [1,2,2,3,3,null,null,4,4]

1
/ \
2 2
/ \
3 3
/ \
4 4
返回 false 。

 1 /**
 2  * Definition for a binary tree node.
 3  * struct TreeNode {
 4  *     int val;
 5  *     TreeNode *left;
 6  *     TreeNode *right;
 7  *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 8  * };
 9  */
10 class Solution {
11 public:
12     bool isBalanced(TreeNode* root) {
13         if(!root||(!root->left&&!root->right)) return true;
14         int lh=height(root->left),rh=height(root->right);
15         if((lh-rh>1)||(rh-lh>1)) return false;
16         return isBalanced(root->left)&&isBalanced(root->right);
17     }
18     int height(TreeNode* tree)
19     {
20         if(tree==NULL) return 0;
21         int lh=height(tree->left),rh=height(tree->right);
22         return lh>rh?lh+1:rh+1;
23     }
24 };

 

上一篇:oracle用户创建


下一篇:【leetcode】1652. Defuse the Bomb