问题概述
给定一个二叉树,判断它是否是高度平衡的。
高度平衡 二叉树是指每个节点的两个子树的深度差不超过 1 的二叉树。
可视化说明
示例 1:平衡树(输出:true)
3
/ \
9 20
/ \
15 7
高度:左 = 1,右 = 2,差值 = 1 ≤ 1 ✓
两个子树也都是平衡的 ✓
示例 2:不平衡(输出:false)
1
/ \
2 2
/ \
3 3
/ \
4 4
高度:左 = 3,右 = 1,差值 = 2 > 1 ✗
树不平衡
什么是高度平衡?
一棵树是高度平衡的,如果:
- 对于每个节点,
|左高度 - 右高度| ≤ 1 - 左右子树也都是高度平衡的
- 空树被认为是平衡的(高度 = 0)
解法 1:递归(自顶向下)
工作原理
对于每个节点,计算左右子树的高度,然后检查是否平衡:
class Solution:
def isBalanced(self, root):
if not root:
return True
left_height = self._getHeight(root.left)
right_height = self._getHeight(root.right)
if abs(left_height - right_height) > 1:
return False
return self.isBalanced

341

被折叠的 条评论
为什么被折叠?



