AVL旋转 - 要旋转的节点

时间:2016-10-08 05:02:32

标签: rotation avl-tree

我已经阅读了很多关于AVL树的消息来源,但是没有找到任何解决这个问题的人:当AVL树变得不平衡时,应该首先旋转哪个节点?

假设我有树:

    10
   /  \
   5   25
       / 
      20

我试图添加15,根和它的子25将是不平衡的。

    10
   /  \
   5   25
       / 
      20
      /
     15

我可以进行25次RR旋转(或单次旋转),产生以下树:

     10
    /  \
   5    20
        /\
      15  25

或关于根的RL旋转(双旋转),创建以下树:

    20
   /  \
  10   25
 /  \     
5   15   

我很困惑哪种旋转最适合这种情况和类似情况。

1 个答案:

答案 0 :(得分:1)

RR旋转在这里是正确的。旋转应该在规则被打破时尽快(尽可能低)完成。这是25岁。

较高的轮换率首先不一定会破坏规则,其次会变得过于复杂,尽管第一眼看上去并非如此。