如何使用 Python 确定二叉树是否高度平衡

2025年3月17日 | 阅读 3 分钟

高度平衡二叉树

二叉树数据结构,称为“高度平衡二叉树”或“平衡二叉树”,其每个节点的左子树和右子树的高度差最多为一。这是确保插入和删除效率以及树的平衡的关键特征。

二叉树的高度由从根节点到叶节点的longest路径的长度(以边为单位)决定。与不平衡二叉树相比,高度平衡二叉树的效率要高得多,因为树的高度保证为节点数目的对数。

  • AVL 树、红黑树和伸展树是一些可用于保持二叉树平衡的策略。
  • 当添加新节点或删除旧节点时,这些策略会使用旋转来重新平衡树。
  • 高度平衡二叉树除了高效之外,还提供快速的搜索、插入和删除操作。它们还使得实现二分查找、树遍历和数据压缩等关键算法变得容易。
  • 总而言之,高度平衡二叉树是一种实用且高效的数据结构,可应用于各种场景,例如数据库、搜索引擎和视频游戏。

高度平衡二叉树示例

How to Determine if a Binary Tree is Height-Balanced using Python

在此示例中,根节点是数字 6。右子树(7、8、9、10)和左子树(3、2、1)的高度均为 2。左子树和右子树之间的高度差仅为一,这表明该树是高度平衡的。尽管图显示的是平衡树,但随着节点被添加或删除,树的平衡性可能会随着时间的推移而改变。像 AVL 树、红黑树和伸展树这样的算法被用来确保在发生更改后树仍然保持平衡,以维持其平衡性。

如何判断二叉树是否高度平衡?

我们可以创建一个递归方法来测量树的高度,并在左子树和右子树的高度差过大(超过一)时返回 False。以下是 Python 实现的示例:

代码

说明

此示例中的 `is_balanced` 函数检查左子树和右子树的高度差是否超过一,如果超过则返回 False。`height` 方法通过将左子树和右子树的高度加上 1 来确定树的高度。通过将树的根节点作为参数传递,您可以使用 `is_balanced` 的结果来计算二叉树是否高度平衡。如果程序返回 True,则该树是高度平衡的;否则,不是。

高度平衡二叉树程序

以下是高度平衡二叉树的 Python 程序示例:

代码

输出

The binary tree is height-balanced.