Rotation AVL旋转-旋转哪个节点
我读过很多关于AVL树的资料,但没有找到任何人解决这个问题:当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
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美元 更高的旋转首先不一定会打破规则,其次会变得太复杂,尽管乍一看似乎不是这样