众所周知,红黑树作为二叉查找树的一种,在linux内核中,在众多的数据结构中,
有着广泛而相当重要的应用。
然其算法实现之难度之大,离奇曲折,错综复杂,单看红黑树的插入、删除情况,
便已令不少初学者学习红黑树的兴趣大打折扣。
于是,继微软面试100题系列之后,作者July又一次主刀了。
面对红黑树这个“庞然”大物,大刀阔斧、抽丝剥茧,
带领读者深入红黑树内部,窥其奥秘。
宏观上,整体把握红黑树的各种插入、删除情况;微观上,针对每一种插入、删除情况,
详尽解剖,细致入微的探究红黑树每一个算法步骤背后的运作原理,
可谓力道十足,不少读者热烈要求作者再继续阐述其它B树、2-3-4树等诸如此类的树。
当然,这是后话。
第一篇 透彻详尽 直达心扉
I、 教你透彻了解红黑树:
http://blog.csdn.net/v_JULY_v/archive/2010/12/29/6105630.aspx
在这份,红黑树系列文章里,作者始终紧抓红黑树的5个性质不放,一一阐述树的左旋、右旋,
红黑树的插入、删除等情况。
在第一篇,教你透彻了解红黑树的文章里头,作者不但透彻清晰阐述了红黑树性质、插入、删除等情况,
更是列出了一幅幅美妙而精彩的插图。
说真的,还有什么比图来的更直观、更具形象、更具精彩列?
第二篇 层层剖析 图文并茂
II、 红黑树算法的层层剖析与逐步实现
http://blog.csdn.net/v_JULY_v/archive/2010/12/31/6109153.aspx
显然,面对红黑树这个大部头,一篇文章显然不足以透彻阐述清楚,
为了让读者对红黑树有个真正透彻的了解,作者在第二篇文章里头:
红黑树算法的层层剖析与实现,手上操的依然是那把锋利的小刀,面对的仍旧是红黑树这个大块头,
作者分十层,层层剖析红黑树的各个算法步骤的实现。
令人叹为观止,且大加称赞的是,这次作者竟亲自拿着彩笔在白纸上,
一笔一画,一张一张图的把红黑树各个算法步骤清晰的画了出来。
彼节者有间,而刀刃者无厚;以无厚入有间,恢恢乎其于游刃必有余地矣。
尤其是红黑树插入的3种、删除的4种情况,作者气定神闲,配图之间,不见一丝缭乱与草率,
图画形象生动,精彩异常。
同时细分十层,层层剖析,鞭辟入里,细致入微,不得不令人所折服。
第三篇 认真负责 源码上阵
III、教你彻底实现红黑树:红黑树的c源码实现与剖析
http://blog.csdn.net/v_JULY_v/archive/2011/01/03/6114226.aspx
按理说,红黑树行文至此,红黑树这个大块头早已公诸于读者面前,再无秘密可言,
然令读者依然没有想到的是,作者担心前面俩篇文章,由于给出的是伪码实现,无法上机验证,
作者个人从网上找来了一份c源码,一点一点的修正完善,一行一行的添加注释。
作者面对红黑树这个庞然大物,不但无丝毫畏惧,反而越战越勇,且对他的读者如此认真负责,
不由,心生敬佩。
第四篇 淋漓尽致 极致疯狂
IV、一步一图一代码,一定要让你真正彻底明白红黑树
http://blog.csdn.net/v_JULY_v/archive/2011/01/09/6124989.aspx
架构显已剖析透彻,源码实现也已经验证,想此,此红黑树系列可告终结了,
然,作者,依然没有就此罢手,最终,他完成了他的第四篇文章,
一步一图一代码,一定要让你真正彻底明白红黑树,
有一句话,“既然写了红黑树,那么我就一定要把它真正写好,让读者真正彻底明白红黑树。”
可谓,潜龙出水,畅游千里,直达大洋。
这也正验证了作者之前说过的一句话,“把一件简单的事做到极致,便是一种美,一种疯狂”。
毫无疑问,作者做到了这一点,在最后一篇文章里,作者一步一图,一步一代码,
丝一根一根地抽,茧一层一层地剥,抽丝剥茧,直抵利害。
本着一定要让读者彻底明白红黑树的认真负责的精神,继续阐述,体现的淋漓尽致。
此种极致疯狂,不达目的誓不罢休,对读者如此认真负责的精神,
即便放眼整个论坛,亦不多见。
至此,4篇文章,红黑树系列终告完结。如此深根究底,痛快淋漓,
不但是对作者本人内心的一份洗礼,而长达4篇文章的篇幅,更是对他的读者的耐心一种考验。
ok,一句话:敢问读者,盛宴已摆在眼前,是否享用?
完。
本人July对本博客所有任何文章、内容和资料享有版权,
转载请注明作者本人July及出处。谢谢。July、二零一一年一月三十日。