0

我熟悉将单个 2 节点、3 节点和 4 节点直接转换为红黑树。这个 Stackoverflow 链接是对 Red-Black 的一个很好的解释 2-3-4。但是,我对该链接中给出的示例有疑问。这就是 Stackoverflow 问题 2-3-4 to red-black 的说明2-3-4 to Red-Black

我强调了我所质疑的部分。为什么在这个指南上我找到了 4-node connected to 2-node和其他人在互联网上,他们说当遇到连接到 2 或 3 节点的 4 节点时,你需要切换颜色。但是在我突出显示红色的 StackOverflow 示例中,它们没有。谢谢

4

1 回答 1

0

下图并不意味着需要交换红背树的颜色:

3

它仅描述了拆分 B 树节点的过程,这导致相同数据的替代B 树。

然后它显示了 B 树的不同形状如何导致相应红黑树中的不同颜色,以及新颜色如何也是有效的替代方案。

但是从 B 树到红黑树的转换遵循您提到的规则:

如果我们查看图像的左侧,我们会在 B 树的底层看到一个 4 节点。根据规则,这将转换为具有两个红色子节点(b 和 d)的黑色节点 (c)。根处的 2 节点转换为黑色节点 (a)。

如果我们查看图像的右侧,我们会在 B 树的底层看到两个 2 节点。这些将每个转换为一个后节点(b 和 d)。根 3 节点被转换为以红色节点 (c) 作为子节点的后节点 (a)。

这正是图像底部所描绘的。关键是这两个变体对于相同的数据是有效的红黑树,但源自不同形状的 B 树。

插入节点时可能需要这种从左到右版本的转换。例如,如果要添加一个“e”,那么它不能在不重新着色的情况下添加为红黑树中“d”节点的子节点。通过切换到红黑树的右侧版本,可以将节点添加为节点“d”的(红色)子节点。

于 2021-12-06T21:17:25.613 回答