ZZ 红黑树,并非想象中的那么复杂
2011-06-03 13:11
344 查看
把一年前写的红黑树一章重新写了一遍。红黑树是非常popular的一种self-adjusted的平衡二叉排序树。 通常他给我们的印象是很复杂,有很多case,要小心的旋转。TL上曾经有人说,在某公司的面试时,被要求实现红黑树。他觉得这很没有道理,几乎很少有 人能在不参考教科书的情况下,记清楚那么多的case。 在这一章里,我将向你展示目前我所见过的最简洁的红黑树实现。简洁到什么程度呢?我打赌你看过后能轻松通过上面的面试——Wow, 红黑树原来可以这么 简单! 这个实现,来自Chris Okasaki在卡耐基梅隆大学(CMU)的博士研究成果。他启发我用同样的方法简洁地实现了AVL tree和 Splay tree。 这一章我们讲红黑树,大致内容如下: 1. 简介——我们看看普通的排序二叉树致命弱点,并且给出树旋转的概念; 2. 红黑树的定义——我们看看为什么红黑树的性质能解决平衡问题,从而胜过排序二叉树; 3. 插入——我们给出红黑树插入算法的数学定义,这里是本章的精华; 4. 删除——删除本来不是个问题,但是我们要展示下删除比起插入有多复杂; 6. 传统实现——我们看看传统实现的红黑树插入算法有多复杂,并做进一步的比较分析;传统实现的删除算法我们留作练习。 7. 其他——多说两句 全文在 https://sites.google.com/site/algoxy/rbtree 由于google site国内访问不到,所以我放了一份在iteye的附件里。 http://liuxinyu95.iteye.com/blog/1068508 全部源代码在github可以获得: https://github.com/liuxinyu95/AlgoXY |
相关文章推荐
- 正确、简单的代码是并非想象的那么简单
- 简单点儿、简单点儿、再简单点儿,其实世界可以不是我们想象的那么复杂
- 红黑树并没有我们想象的那么难(上)
- 简单点儿、简单点儿、再简单点儿,其实世界可以不是我们想象的那么复杂
- 红黑树并没有我们想象的那么难(下)
- [似难置信]你的机器并非想象得那么快!
- 红黑树并没有我们想象的那么难(上)
- 红黑树并没有我们想象的那么难(下)
- 简单点儿、简单点儿、再简单点儿,其实世界可以不是我们想象的那么复杂
- VBA判断EXCEL表格中的注释是否存在,原来并没有想象的那么复杂
- 红黑树并没有我们想象的那么难(上)
- 红黑树并没有我们想象的那么难
- 红黑树并没有我们想象的那么难(下)
- 红黑树并没有我们想象的那么难(上)
- 红黑树并没有我们想象的那么难
- Java单例模式——并非看起来那么简单
- Thinking in c#没有想象中那么好!
- solidthinking那么傻瓜的软件,能替代hypermesh这些比较复杂的传统cae软件么?
- 成长-----没你想象中那么迫切
- 成长,没你想象的那么迫切