平衡二叉树(AVL 树):严格平衡的二叉查找树
平衡二叉树(AVL 树)是一种自平衡的二叉查找树,其核心特性是左右子树的高度差(平衡因子)的绝对值不超过 1。通过严格的平衡约束和旋转操作,AVL 树保证了树的高度始终为O(logn),从而确保查找、插入、删除等操作的时间复杂度稳定在O(logn),避免了普通二叉查找树在极端情况下的性能退化。
AVL 树的核心定义与特性
平衡因子(Balance Factor)
- 定义:对于 AVL 树中的每个节点,平衡因子 = 左子树高度 - 右子树高度。
- 约束:所有节点的平衡因子必须满足 -1 ≤ 平衡因子 ≤ 1。
核心特性
- 满足二叉查找树的所有性质(左子树节点值 < 根节点值 < 右子树节点值)。
- 左右子树均为 AVL 树(递归定义)。
- 树的高度严格控制在
O(logn)(对于 n 个节点的 AVL 树,高度约为1.44log(n+2)-1.328)。
AVL 树的平衡维护:旋转操作
当插入或删除节点导致平衡因子的绝对值超过 1 时,AVL 树通过旋转操作恢复平衡。旋转的目标是调整节点位置,使平衡因子重新满足[-1, 1]的约束,同时保持二叉查找树的有序性。
1. 左旋(Left Rotation)
适用于右子树过高的场景(平衡因子为 - 2),通过将节点与其右子节点旋转,降低右子树高度。
