我最好的猜测是,当您从已经平衡的AVL树插入或删除一个元素时,一次旋转总是足以平衡AVL树。
一次旋转总是足够吗? 一个例子将有助于需要多次轮换。
PS:我将RL / LR旋转计为仅一次旋转。
答案 0 :(得分:6)
对于插入1旋转最多。
对于删除,旋转次数以O(log(n))为界。 Log(n)是树的高度。
关于AVL删除的更多解释。
从AVL删除节点时,可能会导致树不平衡,您必须追溯到不平衡点。如果不平衡点是根。您必须从上到下重新平衡树。
答案 1 :(得分:4)
对于插入,我相信一个就足够了。
但是要删除: 考虑这棵树:
50
/ \
25 75
/ \ / \
15 40 60 80
/ / \ \
35 55 65 90
/
62
删除15,首先破坏25的平衡因子,一次旋转:
50
/ \
35 75
/ \ / \
25 40 60 80
/ \ \
55 65 90
/
62
但是,我们必须检查,现在树的根平衡因子被破坏,必须再次旋转:
60
/ \
50 75
/ \ / \
35 55 65 80
/ \ / \
25 40 62 90