|
|
|
@ -1095,15 +1095,16 @@ AVL 树的特点在于「旋转 Rotation」操作,它能够在不影响二叉
|
|
|
|
|
<p align="center"> 图:AVL 树的四种旋转情况 </p>
|
|
|
|
|
|
|
|
|
|
在代码中,我们通过判断失衡节点的平衡因子以及较高一侧子节点的平衡因子的正负号,来确定失衡节点属于上图中的哪种情况。
|
|
|
|
|
<p align="center"> 表:四种旋转情况的选择条件 </p>
|
|
|
|
|
|
|
|
|
|
<div class="center-table" markdown>
|
|
|
|
|
|
|
|
|
|
| 失衡节点的平衡因子 | 子节点的平衡因子 | 应采用的旋转方法 |
|
|
|
|
|
| ---------------- | ---------------- | ---------------- |
|
|
|
|
|
| $>1$ (即左偏树) | $\geq 0$ | 右旋 |
|
|
|
|
|
| $>1$ (即左偏树) | $<0$ | 先左旋后右旋 |
|
|
|
|
|
| $<-1$ (即右偏树) | $\leq 0$ | 左旋 |
|
|
|
|
|
| $<-1$ (即右偏树) | $>0$ | 先右旋后左旋 |
|
|
|
|
|
| $> 1$ (即左偏树) | $\geq 0$ | 右旋 |
|
|
|
|
|
| $> 1$ (即左偏树) | $<0$ | 先左旋后右旋 |
|
|
|
|
|
| $< -1$ (即右偏树) | $\leq 0$ | 左旋 |
|
|
|
|
|
| $< -1$ (即右偏树) | $>0$ | 先右旋后左旋 |
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|