插入后产生的红黑树是否独特?

Rya*_*yan 7 algorithm binary-tree red-black-tree

假设我有一个二叉搜索树,它最初满足所有的红黑条件,并且在某些集合S中包含每个整数s的一个节点.接下来,我想要一个新节点; 说一个(不在S中).

重新平衡后,这个添加的结果是独一无二的吗?

换句话说:插入节点后是否只有一种方法可以重新平衡红黑树?

我相信它们并不是独一无二的,尽管我没有提供任何证据(而且信心不足).我只是想知道一个比我更有知识的人是否会如此善良以至于能够启发我?

dav*_*vin 7

它们并不是唯一的.

一个简单的证据就是进行一个简单的算法更改,例如检查我们是否可以更改根的颜色,并提供一个仍然有效的情况,例如:

    1-B
   /  \
 0-R  2-R
Run Code Online (Sandbox Code Playgroud)

add(3):

    1-B
   /  \
 0-B  2-B
        \
        3-R
Run Code Online (Sandbox Code Playgroud)

但是新算法可以很容易地产生

    1-R
   /  \
 0-B  2-B
        \
        3-R
Run Code Online (Sandbox Code Playgroud)

根是不同的颜色,但当然树木仍然是有效的RB树.

这可能看起来有点微不足道,但你可以扩展这个想法(如果你想要一个不那么微不足道的证明)来检查不仅仅是根.您可以检查O(1)级别以进行非平凡但有效的更改,这将生成具有相同运行时间的两种不同算法.

例如,检查前10行是否为黑色,并将奇数行更改为红色,将产生额外的常量工作(即O(1))和新算法.

我应该注意,这只是非唯一性的证明,而不是非唯一性的限制.就像这样微不足道的事情足以证明这一点,但它为RB算法打开了大门,这些算法在更基本的方面有所不同.