您的位置:首页 > 其它

算法导论13.4删除 练习总结

2015-10-18 19:24 260 查看
13.4-1 在执行 RB-DELETE-FIXUP 之后,证明:树根一定是黑色的。

ANSWER:

case 1:要进入循环,则 x.color = BLACK,且 x ≠ T.nil,所以不可能从case 1退出循环,所以必定会进入case 2,3,4。

case 2:w = x.p.right,则 w 不可能是T.root;如果从case 2退出循环,则 x = T.root,则23行 x.color = BLACK 令 T.root.color = BLACK。

case 3:会进入case 4。

case 4:第21行 x = T.root,则会退出循环,且23行 x.color = BLACK 令 T.root.color = BLACK。

综上,性质 2 得到维持。

13.4-2 在RB-DELETE 中,如果 x 和 x.p 都是红色的, 证明:可以通过调用 RB-DELETE-FIXUP(T, x)来恢复性质 4。

ANSWER:若 x 和 x.p 均为红色,则不会进入循环,且第 23 行 x.color = BLACK 会改变 x 结点的颜色。

13.4-3 在练习 13.3-2 中, 将关键字41、38、31、12、19、8连续插入一棵初始的空树中,从而得到一棵红黑树。请给出从该树中连续删除关键字 8、12、19、31、38、41 后的红黑树。

ANSWER:






13.4-4 在 RB-DELETE-FIXUP 代码的哪些行中,可能会检查或修改哨兵 T.nil?

ANSWER:如果 w 有不多于一个儿子,则第 9 行会检测 T.nil。

13.4-6 Skelton 和 Baron 教授担心在 RB-DELETE-FIXUP 的情况 1 开始时,结点 x.p 可能不是黑色的。如果这两位教授是对的,则第 5~6 行就是错的。证明: x.p 在情况 1 开始时必是黑色的,从而说明这两位教授没有担心的必要。

ANSWER:如果 x.p 是红色的,则 w = x.p.right 必为黑色,则不能进入 case 1,所以 x.p 在情况 1 开始时必为黑色。

13.4-7 假设用 RB-INSERT 将一个结点 x 插入一棵红黑树,紧接着又用 RB-DELETE 将它从树中删除。结果的红黑树与初始的红黑树是否一样?证明你的答案。

ANSWER:不一样。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: