如何使用递归方法判断一个二叉树是否为平衡二叉树?
时间: 2024-10-01 12:02:19 浏览: 25
C语言使用递归创建一棵平衡二叉树
递归是一种有效的方式来判断一个二叉树是否为平衡二叉树,也称为“高度平衡”的树。对于每个节点,我们比较它的左子树和右子树的高度,并检查它们之间的绝对差是否大于1。如果所有节点的左右子树高度差都小于等于1,并且左右子树也是平衡的,那么整个树就是平衡的。
以下是递归算法的基本步骤:
1. **基本情况**:如果当前节点为空,返回True,因为空树是平衡的。
2. **递归情况**:计算左子树和右子树的高度 `left_height` 和 `right_height`。
3. **比较并判断**:如果 `abs(left_height - right_height) > 1`,则当前节点不平衡,返回False;否则继续对左、右子树分别递归地执行上述过程。
4. **递归结束条件**:当两个子树都是平衡的并且满足高度差限制时,返回True。
```python
def isBalanced(root):
def height(node):
if not node:
return 0
left_height = height(node.left)
if left_height == -1:
return -1
right_height = height(node.right)
if right_height == -1:
return -1
if abs(left_height -1
else:
return max(left_height, right_height) + 1
return height(root) != -1
```
阅读全文