【发布时间】:2018-04-01 18:43:06
【问题描述】:
我现在正在学习算法,在实现红黑树插入时,我想到了问题标题中描述的想法。这发生在涉及等值节点时。
让我们从一个简单的示例树开始,其中左子节点小于父节点,右子节点大于或等于父节点。
这种树的初始状态可能如下:
然后,如果我向左旋转这棵树,我会得到:
违反BST条件的节点所有左子节点都小于父节点显示为红色。
所以问题是:为什么许多在二叉搜索树上实现插入、删除或其他操作的算法在旋转破坏 BST 时使用旋转(或者我只是做错了旋转)?
【问题讨论】:
-
不允许重复的树通常具有您描述的条件。允许重复的树通常将其放宽为“所有左孩子都小于或等于”。
-
如果这个严格的不等式条件存在,那对个孩子的等价条件不存在又如何呢?
-
这棵树只是因为你说它坏了才坏。使用旋转的算法不会有这样的条件。
标签: algorithm data-structures binary-tree binary-search-tree tree-rotation