假设我有一个无序集合 s{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 有效的父级进行轮换?
我的解决方案有效吗?
嗯,据我了解,当您第一次添加 4 时,您会得到以下树。
5
/ \
2 6
/ \
1 3
\
4
要继续操作,请参阅维基百科关于 AVL 树的文章 http://en.wikipedia.org/wiki/AVL_tree。因为平衡系数(注意这是文章中定义的)节点5的平衡因子为+2,节点2的平衡因子为-1,首先需要将节点2的子树向左旋转。
5
/ \
3 6
/ \
2 4
/
1
接下来,您需要向右旋转整个树(关于节点 5)。
3
/ \
2 5
/ / \
1 4 6
那有意义吗?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)