您现在的位置是:首页 > 文章详情

那些年面试官问你的红黑树----->(浅谈)

日期:2020-08-28点击:724

在了解红黑树之前,先要了解二叉树,又叫二叉查找树、二叉搜索树、二叉排序树二叉树顾名思义: 是一种每个节点最多有两个子节点的树,同时遵循 左节点的值<父节点的值<右节点的值 这样的规律。

二叉树有如下几个特点:

  • 节点的左子节点小于节点本身

  • 节点的右子节点大于节点本身

  • 左右节点同样为二叉搜索树

下图就是一棵典型的二叉树:

它是一种查找次数小于等于树高的数据结构。如图中树有4层,即树高为4,当我们需要查找8时,经过的路线是这样的:

1、8<9,往左查找

2、8>5,往右查找

3、8>7,往右查找

4、8=8,找到结果

总共查找4次,等于树高。这棵树不管怎么找,查找次数总是小于等于树高。

二叉树的插入同样遵循上述规则,会一步一步对比,从而找到插入的位置,可以想象上图中的8不存在,而是需要插入一个8,结果与上述路线一致。

二叉树的删除会涉及到无子节点和有子节点两种情况,无子节点直接删除即可,有子节点会需要用左边最大值或右边最小值替换当前删除节点,具体不细聊。

当二叉树插入数值不均衡时,会出现树结构的变形与查找性能的损耗,比如现在二叉树有8,9,12三个值,然后需要插入7,6,5,4,3这五个值时,产生的结构如下图所示:

树高会不合理的增高,查找效率也无法得到保证。红黑树就是为了解决这种情况而诞生的。

红黑树又称为自平衡二叉树,它符合二叉树的规则同时比它的规则更加的复杂,具体规则如下:

1、所有节点都是红色或黑色

2、根节点为黑色

3、所有叶子都是黑色(NIL节点)

4、每个红色节点必须有两个黑色的子节点。(不能有两个连续的红色节点。)

5、从任一节点到其每个叶子的所有简单路径(不要回退)都包含相同数目的黑色节点。

具体样子如下图所示:

解释一下几个规则的含义:

1和2很好理解,节点都是红和黑,根节点是黑色的。

3所有叶子都是黑色的,叶子与叶子节点是两个概念,叶子不是一个节点,可以理解为没有数值的空节点,也就是图中的NIL。

4也很好理解,红色节点的子节点都是黑色的,这就保证了没有两个连续的红色节点。

5稍微解释一下,简单路径就是说一次到底,不要回退,叶子就是NIL,比如从8这个节点出发,不管是去1下面的叶子,11下面的叶子,还是6下面的叶子,都是经过一个黑色节点,从任何节点出发都是一样的规则,经过相同数量的黑色节点。

以上5个规则,加上二叉树的规则,就组成了红黑树这一极具特点的树型数据结构。

原文链接:https://my.oschina.net/u/4234912/blog/4534465
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章