关于AVL旋转

时间:2011-09-05 09:17:05

标签: algorithm avl-tree

我正在阅读Mark Allen Wesis的数据结构和算法中的AVL树

  

假设要重新平衡的节点是X.我们有4种情况   可能要修复(两个是另外两个的镜像):An   插入X的左子节点的左子树,插入   X的左子项的右子树,左侧的插入   X的右子树的子树,或右子树中的插入   X的正确孩子。

     

通过树旋转恢复平衡。

以下是我在上面的文字摘要中提出的问题。

  1. 作者对其他两个镜像的意思是什么?
  2. 单次旋转和双次旋转的对称情况是什么?
  3. 由于

1 个答案:

答案 0 :(得分:2)

假设插入的节点是I.书中说有4个案例。让我们来看看我是X的左子女的左孩子:

    X
   / \
  ?   ?
 / \ / \
I  ? ?  ?

这是“镜子”,当我是X的正确孩子的正确孩子时:

    X
   / \
  ?   ?
 / \ / \
?  ? ?  I

这是一个“镜子”的原因是你必须为两种情况做的旋转是相同的,只是左右颠倒。其他两种情况也是如此,我是X的右孩子的左孩子,我是X的左子女的右孩子。

至于你的第二个问题,这个想法是一样的。在对称的情况下(即镜像盒),你可以进行相同的旋转,只需左右颠倒。