Java 为什么不';红黑树上的这两个节点不是黑色的吗?

Java 为什么不';红黑树上的这两个节点不是黑色的吗?,java,data-structures,collections,tree,red-black-tree,Java,Data Structures,Collections,Tree,Red Black Tree,据我所知,在红黑树中,当我插入一个新节点时,当我在向下的过程中遇到一个带有两个红色子节点的黑色节点时,我需要翻转颜色,即使父节点为红色,其两个子节点为黑色(根节点除外) 我在维基百科上看到了这张图片: 为什么8号和17号不是黑色的 我还查阅了Lafore的“Java中的数据结构和算法”中的一篇文章;同样的,这些节点变成黑色 这个红黑树有多个版本吗?实际上很有可能使这些节点变黑。可能有几种不同的方法为树的节点着色,以使生成的树遵守红/黑树的结构约束。例如,任何完美的二叉树都可以着色,使所有节点都

据我所知,在红黑树中,当我插入一个新节点时,当我在向下的过程中遇到一个带有两个红色子节点的黑色节点时,我需要翻转颜色,即使父节点为红色,其两个子节点为黑色(根节点除外)

我在维基百科上看到了这张图片:

为什么8号和17号不是黑色的

我还查阅了Lafore的“Java中的数据结构和算法”中的一篇文章;同样的,这些节点变成黑色


这个红黑树有多个版本吗?

实际上很有可能使这些节点变黑。可能有几种不同的方法为树的节点着色,以使生成的树遵守红/黑树的结构约束。例如,任何完美的二叉树都可以着色,使所有节点都是黑色的,或者可以使行在红色和黑色之间交替,等等

在红/黑树中重新排序和旋转节点的特定规则不是唯一可能的规则。他们只是碰巧能正确有效地工作。原则上,我们可以改变它们,使树以不同的方式着色和旋转,这可能会使具有相同节点的树产生不同的颜色或形状


希望这有帮助

当你说“除了从根本上”时,你是在回答你自己的问题吗?8和17是根的子节点