【发布时间】:2020-09-19 20:41:18
【问题描述】:
我正在阅读 Robert Sedgewick 的《算法第 4 版中的左倾红黑树》。我花了几天时间试图理解 deleteMin 作为理解 delete 的热身,这是我关于 deleteMin 的最后一个问题。
public void deleteMin()
{
root = deleteMin(root);
root.color = BLACK;
}
private Node deleteMin(Node h)
{
if (h.left == null) return null;
if (!isRed(h.left) && !isRed(h.left.left))
h = moveRedLeft(h);
h.left = deleteMin(h.left);
return fixUp(h);
}
当 h.left 和 h.left.left 都是黑色时,调用 h=moveRedLeft(h);
问题是,我们如何断言节点 b 是红色,如图所示?
【问题讨论】: