[leetcode]剑指 Offer 55 - II. 平衡二叉树
输入一棵二叉树的根节点,判断该树是不是平衡二叉树。如果某二叉树中任意节点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。
示例 1:
给定二叉树 [3,9,20,null,null,15,7]
3
/
9 20
/
15 7
返回 true 。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
示例 2:
给定二叉树 [1,2,2,3,3,null,null,4,4]
1
/
2 2
/
3 3
/
4 4
返回 false 。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
限制:
0 <= 树的结点个数 <= 10000
- 1
思路:
同[leetcode]110.平衡二叉树
AC代码:(C++)
class Solution {
public:
bool isBalanced(TreeNode* root) {
if (recur(root) == -1) return false;
return true;
}
int recur(TreeNode* root) {
if (root == nullptr) return 0;
int left = recur(root->left);
if (left == -1) return -1;
int right = recur(root->right);
if (right == -1) return -1;
return abs(left - right) < 2 ? max(left, right) + 1 : -1;
}
};
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
推荐阅读