【发布时间】:2016-06-28 04:46:12
【问题描述】:
想知道为什么对于红黑树插入,我们先将新节点标记为红色,然后再做一些调整?为什么不将其标记为黑色并进行一些适当的调整?谢谢。
我认为唯一的原因是,添加一个Red节点不会破坏Red-Black树在黑色节点相关规则上的任何规则(例如从根到叶的路径包含相同数量的黑色节点),只需要调整任何违反红色规则的行为(即父/子不能是连续的两个红色节点),这使得代码变得简单。我认为添加黑色节点并调整黑色节点数量(在不同路径上)的违规是不可能的。总之,添加黑色以外的红色节点只是为了代码简单,没有其他原因。如果我错了,请随时纠正我。
【问题讨论】:
-
您对它的外观和后果有什么想法?就“研究态度”而言,您提出了一个很好的问题——但就 StackOverflow 而言,您所付出的努力比提问者通常需要的要少得多。我鼓励你尝试详细说明“做一些适当的调整”意味着什么,并提出一个假设,说明为什么这可能更好或更坏——你将通过这样做自学红黑树,你会得到这里有更多参与的回答者。
-
@DanielWagner,我认为唯一的原因是,添加一个红色节点不会破坏任何关于黑色相关规则的红黑树规则(例如,从根到叶的路径包含相同数量的黑色节点),只需要调整任何违反红色规则的地方(即父/子不能是连续的两个红色节点),这使得代码简单。我不认为添加黑色节点并调整黑色节点数量的违规行为是不可能的。我可能是错的,感谢您的建议。我也会用帖子更新我的想法。
-
@DanielWagner,感谢您的建议并为您的 cmets 投票。 :)
标签: algorithm data-structures red-black-tree