平衡二叉树是一种特殊的二叉树,它的左子树和右子树的高度差不超过1。判断一棵二叉树是否为平衡二叉树是常见的编程问题。在本文中,我们将详细探讨如何判断和实现平衡二叉树,并提供相应的源代码。
- 平衡二叉树的定义
平衡二叉树(Balanced Binary Tree),也被称为AVL树,是一种特殊的二叉树。它的定义如下:
- 空树是一棵平衡二叉树。
- 对于非空树,它的左子树和右子树的高度差的绝对值不超过1,并且左子树和右子树也都是平衡二叉树。
- 判断平衡二叉树的方法
判断一棵二叉树是否为平衡二叉树的常见方法是通过递归遍历树的每个节点,并计算其左子树和右子树的高度差。具体的判断过程如下:
- 如果二叉树为空,则返回True。
- 计算二叉树的左子树的高度。
- 计算二叉树的右子树的高度。
- 如果左子树和右子树的高度差的绝对值大于1,则返回False。
- 递归判断左子树和右子树是否为平衡二叉树,如果都是平衡二叉树,则返回True;否则返回False。
下面是用Python实现平衡二叉树判断的源代码:
# 定义二叉树节点
class TreeNode:
def