Logic, Analysis, and Computation

宠辱不惊 静观窗前花开花落 去留无意 闲看天上云卷云舒

导航

<2009年5月>
262728293012
3456789
10111213141516
17181920212223
24252627282930
31123456

统计

公告

如需转载, 请注明出处。

常用链接

留言簿

随笔分类

随笔档案

文章档案

I/O performance

搜索

最新评论

STL Study Day 6: ch5. RB-Tree, set, map

今天把第五章的前半部分看完了, 感觉颇为失望。 侯捷想把RB-TREE的算法表达清楚, 虽然给出了很多好看的图示, 不过, 如果没有接触过RB-TREE, 看过后仍然会是一头雾水。

一个缺点就是把RB-TREE insertion搞复杂了。 在p211,  把一个case分成了两个来说, 而且没有必要的增加了rotation的操作。 一开始, 我很奇怪, STL是这样实现的吗? 后来一看, 算法的实现跟CLRS上的一模一样。 有兴趣的朋友可以看看 CLRS (2nd english) p284 中的第一个case。

其次, 有意思的是, 侯捷并没有分析 RB-TREE delete的操作。 对于delete来说, 过程相对来说, 又要复杂一点。 这里记录一下:

当RB-TREE中的一个node被删除掉后, 有四中情况: (CLRS 2nd page 292):

1. x's sibling w is red

2. x's sibling w is black, and both of w's children are black;

3. x's sibling w is black, w's left child is red, and w's right child is black;

4. x's sibling w is black, and w's right child is red.

7:59:16 PM Friday, May 15, 2009

posted on 2009-05-16 09:00 小学毕业生 阅读(274) 评论(0)  编辑 收藏 引用 所属分类: STL Study


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理