为什么要写这一系列的文章来介绍红黑树呢?
一切源于文章 <<清华程序员面试遭HR嘲讽:手写红黑树都不会,张口就要1万8!>> (作者 :若丨寒)
网友愤愤不平:
我不会红黑树,从来就没会过,月薪30k+;
楼主你先别忙着装,先写个非递归的快排给我看看,要是写不出来,别说1w8刀月薪,1w8刀年薪都不值哦;
没觉得会红黑树多牛,只觉得会红黑树的人很苦;
这个不准备可能真写不出来,准备过的轻松写出来,所以做出来怎么样,做不出来又怎么样?我们公司若是出这种题目,revewer自己会被面试委员会challenge。够狠,遥想当年的你,也未必会;
你面校招的肯定没问题,都工作了,谁还用啊!楼主是牛人啊,红黑树,我现在也不懂,我也是水人啊,活该只拿1万出头的薪水。
大学时光,相信每个计算机专业的学习,都曾对着学校的在线判题系统狂刷排名过,真是一段肆意的青葱岁月。
我将会用一系列文章,让你彻底掌握红黑树,彻底打败恶意嘲讽,走向辉煌人生。
下面我们开始进入红黑树的学习。
在维基百科上红黑树的介绍如下:
红黑树(英语:Red–black tree)是一种自平衡二叉查找树,是在计算机科学中用到的一种数据结构,典型的用途是实现关联数组。
(https://zh.wikipedia.org/wiki/%E7%BA%A2%E9%BB%91%E6%A0%91)
性质
红黑树是每个节点都带有颜色属性的二叉查找树,颜色为红色或黑色。在二叉查找树强制一般要求以外,对于任何有效的红黑树我们增加了如下的额外要求:
一、节点是红色或黑色。
二、根是黑色。
三、所有叶子都是黑色(叶子是NIL节点)。
四、每个红色节点必须有两个黑色的子节点。(从每个叶子到根的所有路径上不能有两个连续的红色节点。)
五、从任一节点到其每个叶子的所有简单路径都包含相同数目的黑色节点。
到这里,我相信有些同学就有点望而止步了,其实我们只要分解成几个关键词,就会发现它还是可以慢慢掌握的。
一、二叉树
二、二叉查找树
三、自平衡二叉查找树
四、每个节点都带有颜色属性的二叉查找树
五、红黑树的额外要求
好了,红黑树的简介就这么多,稍微花一点儿时间,大家都是可以掌握它的。
网友评论