AVL树 - 如何正确插入?

时间:2013-11-03 22:18:11

标签: tree avl-tree

我正在研究AVL树,我知道插入顺序在AVL树中很重要。但我没有找到一些可以澄清我最新的方法,知道哪个是AVL树中正确的插入顺序。 例如:

我必须插入1 2 3 4 5,我怎么知道插入的最佳方式是什么?为什么?

PS:它不是家庭作业,我对AVL树有疑问 提前谢谢

2 个答案:

答案 0 :(得分:2)

我不会直接回答您的问题,但我建议您访问此site。真的帮助我理解了AVL Tree,以及常用功能(如插入,删除,搜索)如何工作。尝试从左侧切换选项!

我希望这会有所帮助:)

答案 1 :(得分:0)

插入新元素时,可能会违反 AVL 树属性。因此,当您插入新元素时,您可能需要平衡树。您可以通过向左或向右旋转来完成。

如果树是右重树,如果树的右子树是左重树,则执行左右旋转,否则进行一次左旋转。

如果树左重,左子树右重,则执行左右旋转。否则,只需向右旋转一次即可。

(左旋): 假设节点 v 和节点 v 的右孩子 x 在从 z 到根的路径上。 W 表示路径上 x 的右孩子 -> 左旋转。新的平衡值:b(x) = 0 和 b(v) = 0。每个孩子向左移动一个。

(右旋): 假设节点 v 和节点 v 的左孩子 x 在从 z 到根的路径上。 W 表示路径上 x 的左孩子——> 右旋转。新余额值:b(x) = 0 和 b(v) = 0。