假设我有一个无序的集合{3,6,5,1,2,4},我需要构建一个AVL树,
这很好......我理解基本轮换,我在这里谈到这一点:
5
/ \
2 6
/ \
1 3
但是当我尝试插入4时它全部崩溃了 我得到了我的最终答案(左边的)
4 But the actual answer is: 3
/ \ / \
2 5 2 5
/ \ \ / / \
1 3 6 1 4 6
当我把它分解时,我会被卡住做同样的旋转 所以即时通知我如何使用对此AVL有效的父项进行轮换?
并且我的解决方案有效吗?
答案 0 :(得分:1)
嗯,据我所知,当你第一次添加4时,你得到以下树。
5
/ \
2 6
/ \
1 3
\
4
要跟进,请参阅Wikipedia's article on AVL trees。因为节点5的平衡因子(请注意,这是在文章中定义的)是+2而节点2的平衡因子是-1,所以首先需要将节点2子树旋转到左边。 / p>
5
/ \
3 6
/ \
2 4
/
1
接下来,您需要向右旋转整个树(关于节点5)。
3
/ \
2 5
/ / \
1 4 6
这有意义吗?