我已经阅读了很多关于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
我很困惑哪种旋转最适合这种情况和类似情况。
答案 0 :(得分:1)
RR旋转在这里是正确的。旋转应该在规则被打破时尽快(尽可能低)完成。这是25岁。
较高的轮换率首先不一定会破坏规则,其次会变得过于复杂,尽管第一眼看上去并非如此。