13.3-1
不破坏性质 4 不代表不破坏红黑树其他性质,若将
z
着为黑色,那么性质 5 将被破坏。
13.3-2
只给出插入后的结果,调整步骤略。
13.3-3
图 13-5:
a) 转换前结点
b) 转换前结点
A,B,C,D
的黑高都是
k+1
,转换后
A,B,D
的黑高是
k+1
,
C
变成
图13-6
情况2、3转换前结点
A,B,C
的黑高都是
k+1
,转换后
A,B,C
的黑高是
k+1
。
13.3-4
颜色被设置为红色的情况只有 1 和 3,这两种情况都是将z.p.p
变为红色。如果z.p.p
是哨兵,则z.p
是根结点,通过循环不变式的 b) 部分以及RB-INSERT-FIXUP
的第一行知此时会跳出循环。对于情况 2,在z.p.p
着成红色前我们先设置了z = z.p
,然后在着色前我们旋转z
,此时z.p.p
和情况 2 前后就成了一样了,因此是没有问题的。
13.3-5
当
n=2
时,根的孩子结点必是红色。以后每次插入结点时,如果是情况 1,则插入结点时红色;如果是情况 2、3,虽然有颜色改变,但红黑数目不变,在旋转结束后就跳出循环。
因此树中至少有一个红结点。
13.3-6
用栈保存从根节点至插 入结点路径中所有的结点。然后将栈传给RB-INSERT-FIXUP
以及LFET-RORATE
和RIGHT-RORATE