Algorithm 关于AVL旋转

Algorithm 关于AVL旋转,algorithm,avl-tree,Algorithm,Avl Tree,我正在阅读Mark Allen Wesis关于数据结构和算法中的AVL树的文章 假设要重新平衡的节点是X 可能需要修复(两个是其他两个的镜像):一个 插入X的左子树的左子树,插入 X的左子树的右子树,在左边插入 X的右子树的子树,或右子树中的插入 X的右子女 通过树木的旋转来恢复平衡 以下是我对上述文本片段的问题 作者所说的其他两个人的镜像是什么意思 单旋转和双旋转的对称情况是什么 谢谢假设插入的节点是I。书上说有4个案例。让我们以我是X的左子的左子为例: X / \ ?

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

假设要重新平衡的节点是X 可能需要修复(两个是其他两个的镜像):一个 插入X的左子树的左子树,插入 X的左子树的右子树,在左边插入 X的右子树的子树,或右子树中的插入 X的右子女

通过树木的旋转来恢复平衡

以下是我对上述文本片段的问题

  • 作者所说的其他两个人的镜像是什么意思
  • 单旋转和双旋转的对称情况是什么

  • 谢谢

    假设插入的节点是I。书上说有4个案例。让我们以我是X的左子的左子为例:

        X
       / \
      ?   ?
     / \ / \
    I  ? ?  ?
    
        X
       / \
      ?   ?
     / \ / \
    ?  ? ?  I
    
    这个“镜子”是当我是X的正确孩子的正确孩子时:

        X
       / \
      ?   ?
     / \ / \
    I  ? ?  ?
    
        X
       / \
      ?   ?
     / \ / \
    ?  ? ?  I
    
    这是一个“镜像”的原因是,两种情况下你必须做的旋转是相同的,只是左右颠倒。这同样适用于另外两种情况,其中I是X的右子的左子,I是X的左子的右子

    至于你的第二个问题,想法是一样的。在对称情况下(即镜像情况),你做同样的旋转,只是左右颠倒