在工作了很长的一段时间以后,我早已枯竭的学习之心又突然冒起,恰逢看到某帖子上写了C++程序员很好做的可以写到简历上的项目,其中就包括红黑树。想到自己那可怜的项目经历,想到现在自己还在外包项目当二等公民,想到下一份面试的时候别人问我“你的项目经历呢?多跟我说说。”我下定决心,开始自己研究一下这个在读书的时候就早已让很多人闻风丧胆的数据结构。
工作后大多数人的自主学习性基本都是无限接近于零,偶有需要研究无非也都是工作需要什么就补什么,点到为止,起码我自己和认识到的很多人都是这样。跟同事说起最近在重新看红黑树这个数据结构,他也是说没用的,不如认真研究一下网络和公司业务,诚然,这样具有功利性的学习会更有回报吧。但我想起自己也曾经在刚开始入门的时候对很多数据结构,算法抱有敬畏和向往之心,也曾买下很多相关书籍准备研究,实际都是吃灰,对这个庞大的知识体系曾有过的求知若渴的心态。我觉得还是学一学也无妨,跟看好看的小说和电影一样,做事情如果真的能投入进去,不必过分功利。不过网络相关的知识我觉得是很有必要抓紧学习巩固的。
这时候我就开始在网上搜索很多红黑树相关的教程,发现真的很难找到一个适合的,很多都只是粗暴地拆解红黑树,也没人讲为什么需要红黑树?有了二叉平衡树不就够了吗?为啥红黑树的节点要区分颜色?可能是我没搜索完全,但是站在一个初学者的角度上看我自己搜出来的帖子,难免还是会对红黑树这个庞然大物感到迷惑。
后来我就想起自己尘封的大黑书《算法导论》,果然有讲到红黑树,而且十分详细,所以下面我的对于红黑树的理解,以及代码实现,更多的是来自于《算法导论》。
详细代码放在:Meta11ic0/MyEasyRBTree: RBTree base on Introduction to Algorithms/红黑树基于自己研究《算法导论》 (github.com) 个人博客为:HALIWUWU