假设我有一棵二叉搜索树,最初满足所有红黑树条件,并包含某个集合S中的每个整数s的一个节点。接下来,我想要一个新的节点;比如说a(它不在S中)。
在重新平衡后,这种添加的结果是唯一的吗?
换句话说:插入一个节点后,是否只有一种方法来重新平衡红黑树?
我认为它们不是唯一的,尽管我没有证据(也没有什么信心)。我只是想知道是否有比我更有经验的人能够帮助我理解。
我认为它们不是唯一的,尽管我没有证据(也没有什么信心)。我只是想知道是否有比我更有经验的人能够帮助我理解。
1-B
/ \
0-R 2-R
add(3):
1-B
/ \
0-B 2-B
\
3-R
1-R
/ \
0-B 2-B
\
3-R
不,有多个算法。
让我们从这两个命题开始:
现在,假设有一种唯一的算法可以将一个节点添加到具有 4 个内部节点的红黑树中。那么,由于该算法只会导致一种结果,因此应该只有 3 个带有 5 个内部节点的红黑树。
这是荒谬的,因为有 5 个内部节点的红黑树的数量是 8。
(参见鸽巢原理)
因此,存在多个“红黑”算法。
希望我理解了您的意思。
O(1)
。你是正确的,那就是这个想法,尽管我在最后指出,这并不意味着RB算法的差异就此结束。仍然可能存在更一般的差异。 - davin