在红黑树插入中,我们总是选择将新节点添加为红色,以便我们可以避免更改树的黑色高度。为什么这比添加黑色节点更理想?
答案 0 :(得分:4)
我认为这是由于红黑树的规则......
1. A node is either red or black.
2. The root is black.
3. All leaves (NIL) are black.
4. Both children of every red node are black.
5. Every simple path from a given node to any of its descendant leaves contains the same number of black nodes.
在树的底部添加一个插入,用一个带有值和2个黑色零子节点的节点替换一个叶子(黑色零)节点。规则5规定每个路径上的黑色节点数必须相同。如果添加了黑色节点,则会违反此规则。我会试着说明一下。
B(10)
R(5) B(15)
B(1) B(6) B(NIL) B(NIL)
B(NIL) B(NIL) B(NIL) B(NIL)
您会注意到每条路径上都有3个黑色节点。如果您尝试在15下插入一个新节点16作为黑色节点(请记住,您正在添加的节点下添加2个黑色nil节点),该路径将变得更长(4)。这样会不正确:
B(10)
R(5) B(15)
B(1) B(6) B(NIL) B(16)
B(NIL) B(NIL) B(NIL) B(NIL) B(NIL) B(NIL)
为了保持满足所有规则,您需要插入一个红色节点,每条路径上的黑色节点数将保持不变。
B(10)
R(5) B(15)
B(1) B(6) B(NIL) R(16)
B(NIL) B(NIL) B(NIL) B(NIL) B(NIL) B(NIL)