algorithm - 二叉搜索树可能会因旋转而损坏吗?

标签 algorithm data-structures binary-tree binary-search-tree tree-rotation

我现在正在学习算法,在实现红黑树插入时,我想到了问题标题中描述的想法。当涉及到等值节点时,就会发生这种情况。

让我们从一个简单的示例树开始,其中左子节点小于父节点,右子节点大于或等于父节点。

这种树的初始状态可能如下:

start

然后,如果我向左旋转这棵树,我会得到:

enter image description here

违反所有左子节点都小于父节点的 BST 条件的节点以红色显示。


所以问题是:为什么许多在二叉搜索树上实现插入、删除或其他算法的算法在旋转破坏 BST 时使用旋转(或者我只是做错了旋转)?

最佳答案

问题是为什么要在满足所有条件时轮换 BST。您示例中的轮换不会以任何方式实现。在“许多算法”中,仅当“插入”或“删除”或“其他”生成违反 BST 属性的新树时才需要旋转。比方说,如果您将 6 替换为 8 作为 BST 的根,那么您的旋转现在就有意义了。

关于algorithm - 二叉搜索树可能会因旋转而损坏吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49601436/

相关文章:

algorithm - Dcg状态算法实现

c - 如何将长整数映射到较小整数(和快速逆)的 N 维 vector ?

java - 数据结构等同于 hashset 但有这些变化?

c - 用于同步多个项目集合的高效数据结构和策略

arrays - 找到 5 个元素的中位数

multithreading - 是否存在任何基于数组的、有界的、无等待的堆栈?

java - 它如何确保一个节点是祖先节点而不是兄弟节点?

c# - 获取二叉树中节点索引的最简单方法 C#

binary-tree - 计算所有结构不同的二叉树的数量的时间复杂度是多少?

javascript - 有没有一种算法既能保证集合顺序又能保持O(1)的插入/删除?