【问题标题】:AVL trees - how to insert correctly?AVL 树 - 如何正确插入?
【发布时间】:2013-11-03 22:18:10
【问题描述】:

我正在做一些关于 AVL 树的研究,我知道插入顺序在 AVL 树中很重要。但是我没有找到可以让我明白什么是了解 AVL 树中正确插入顺序的最佳方法。 例如:

我必须插入 1 2 3 4 5,我怎么知道哪个是最好的插入方式以及为什么?

PS:这不是作业,我对 AVL 树有疑问 提前致谢

【问题讨论】:

标签: tree avl-tree


【解决方案1】:

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

我希望这会有所帮助:)

【讨论】:

【解决方案2】:

插入新元素时,可能会违反 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。

【讨论】:

    猜你喜欢
    • 2021-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多