我正在尝试将新值插入AVL
树。新插入导致不平衡(根据Wikipedia上的文章,这应该属于左右情况),因此需要轮换。但是,在目前的情况下不可能轮换,因为两个孩子最终变得比父母小:
15
/ \
10 27
/ \
8 12
现在,如果我要插入11,结构将变得不平衡:
15
/ \
10 27
/ \
8 12
/
11
由于左子树较长,而左子树具有较长的右子树,根据维基百科图,这应该属于左右情况。然而,在那里,元素4
同时具有左右子树,使得旋转成为可能。但是在这里,因为12
只有左子树,所以旋转使它看起来像:
15
/ \
12 27
/ \
10 8
/
11
导致12
的两个孩子都不到12岁。我在这里做错了什么?
答案 0 :(得分:2)
这种情况涉及检查10
(根的左子)的平衡因子:它是-1,所以我们需要两个不同的旋转(左右的情况)。
首先,我们向左旋转10左右,按照此图像的左上角部分:
所以我们得到:
15
/ \
12 27
/
10
/ \
8 11
然后按照图像中的描述继续下一次旋转。