Rotation AVL旋转-旋转哪个节点

Rotation AVL旋转-旋转哪个节点,rotation,avl-tree,Rotation,Avl Tree,我读过很多关于AVL树的资料,但没有找到任何人解决这个问题:当AVL树变得不平衡时,应该首先旋转哪个节点 假设我有这棵树: 10 / \ 5 25 / 20 我试着加上15,根和它的子25都是不平衡的 10 / \ 5 25 / 20 / 15 我可以将RR旋转(或单个旋转)设置为25,从而生成以下树: 10 / \ 5 20

我读过很多关于AVL树的资料,但没有找到任何人解决这个问题:当AVL树变得不平衡时,应该首先旋转哪个节点

假设我有这棵树:

    10
   /  \
   5   25
       / 
      20
我试着加上15,根和它的子25都是不平衡的

    10
   /  \
   5   25
       / 
      20
      /
     15
我可以将RR旋转(或单个旋转)设置为25,从而生成以下树:

     10
    /  \
   5    20
        /\
      15  25
    20
   /  \
  10   25
 /  \     
5   15   
或围绕根进行RL旋转(双旋转),创建以下树:

     10
    /  \
   5    20
        /\
      15  25
    20
   /  \
  10   25
 /  \     
5   15   

我不知道在这里和类似的情况下,哪种旋转方式最合适。

RR旋转在这里是正确的。当规则被打破时,应尽快(尽可能低)进行旋转。这是25美元

更高的旋转首先不一定会打破规则,其次会变得太复杂,尽管乍一看似乎不是这样