平衡二叉树

二叉搜索树的效率很高,但是存在一个问题。可能由于插入的顺序原因,导致最后树的形状出现一边倒的现象。这样会导致树的深度增加,而二叉搜索树的查询效率就是与树的深度相关。

1. 平衡二叉树的定义

平衡因子(Balance Factor): BF(T)=hLhRBF(T) = h_L - h_R ,其中 hLh_LhRh_R 分别为 TT 的左、右子树的高度

平衡二叉树(Balance Binary Tree)(AVL树):

  • 空树,或者

  • 任一结点左、右子树高度差的绝对值不超过 1,即 BF(T)1\mid BF(T) \mid \le 1

2. 平衡二叉树的调整

发现者:结点的平衡因子出现大于1的情况,称该结点为发现者

麻烦结点:插入过程中,导致出现发现者的结点

2.1 RR旋转(右单旋)

麻烦结点 在发现者 子树的 右边

2.2 LL旋转(左单旋)

麻烦结点 在发现者 子树的 左边

2.3 LR旋转

麻烦结点 在发现者 子树的 右边

2.4 RL旋转

麻烦结点 在发现者子树的 左边

3. 实现

最后更新于

这有帮助吗?