AVL Rotation - 要旋转的节点

AVL Rotation - Which node to rotate

我已经阅读了很多关于 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   

我对这里和类似情况下哪种旋转最合适感到困惑。

这里的RR旋转是正确的。一旦规则被打破,就应该尽快(尽可能低)进行轮换。这里是 25 人。

较高的旋转首先不一定违反规则,其次会变得太复杂,尽管乍一看似乎并非如此。