为什么新插入的节点在红黑树插入操作中总是被染成红色?

Why are newly inserted nodes are always colored red in red black tree insert operation?

请问为什么插入红黑树时,先将新节点标记为红色,然后再做一些调整?为什么不将其标记为黑色并做一些适当的调整呢?谢谢。

我认为唯一的原因是,添加一个红色节点不会破坏红黑树对黑色节点相关规则的任何规则(例如从根到叶的路径包含相同数量的黑色节点),这只需要调整任何违反红色规则的行为(即不能连续出现 parent/child 的两个红色节点),这使代码变得简单。我不认为添加黑色节点并调整黑色节点数量(在不同路径上)的违规是不可能的。简而言之,除了黑色之外,添加红色节点只是为了简化代码,没有其他原因。如果我错了,请随时纠正我。

  1. 插入红色节点不太可能违反red-black规则 比插入一个黑色的。这是因为,如果新的红色节点是 附在一个黑色的,没有规则被打破。它不会创建一个 有两个红色节点一起断开的情况 红色 parent 黑色 children 的规则,它不会改变黑色 任何路径中的高度(从根到叶的黑色节点数)。
  2. 当然,如果你在一个红色节点上附加一个新的红色节点,规则 red parent-black children 会被侵犯。然而,运气好的话 这只会发生一半的时间。然而,如果你添加一个新的黑色 节点,它总是会改变其路径的黑色高度, 违反黑色高度规则。

  3. 另外,更容易修复红色的违规问题parent-black children 规则比黑色高度规则。

来源:Data Structures & Algorithms in Java Second Edition - Robert Lafore 第 437 页。