想知道为什么红黑树插入,我们先将新节点标记为红色,然后进行一些调整?为什么不将其标记为黑色并进行适当的调整?感谢。
我认为唯一的原因是,添加红色节点不会破坏黑色节点相关规则上的任何红黑树规则(例如,从根到叶的路径包含相同数量的黑色节点),这只需要调整任何违反红色规则的行为(即不能为父/子连续两个红色节点),这使得代码变得简单。我不认为添加黑色节点并调整黑色节点数量(在不同路径上)的违规是不可能的。简而言之,添加黑色以外的红色节点仅仅是为了简化代码,没有其他原因。如果我错了,请随时纠正我。
答案 0 :(得分:3)
当然,如果您将新的红色节点附加到红色节点,则规则为 红色的父母 - 黑人儿童将受到侵犯。但是,运气好的话 这只会发生一半的时间。然而,如果你添加一个新的黑色 节点,它总是会改变其路径的黑色高度, 违反黑色高度规则。
此外,更容易修复违反红色黑人父母的问题 规则比黑色高度规则。
来源:Data Structures & Algorithms in Java Second Edition - Robert Lafore第437页。