当前位置:首页 > 经验 >

红黑树二叉树的区别(红黑树和平衡二叉树区别)

来源:原点资讯(www.yd166.com)时间:2022-11-14 14:11:33作者:YD166手机阅读>>

上面这张图就是红黑树,你会发现他有如下特征(下面的特征最好看一个特征重新看一遍红黑树):

(1)每个节点只有两种颜色:红色和黑色。

(2)根节点是黑色的。

(3)每个叶子节点(NIL)都是黑色的空节点。

(4)从根节点到叶子节点,不会出现两个连续的红色节点。

(5)从任何一个节点出发,到叶子节点,这条路径上都有相同数目的黑色节点。

这五条就是红黑树的特征,你每看一个特征最好重新看一遍图,这样可以加深理解。这五条特征看起来真的很复杂,不过正是由于这些复杂的特征才保证了红黑树的良好特性。如何保证的呢?我们从增删改查四个角度来一个一个分析一下:

1、查询节点

查询节点是最简单的一个,他的查找过程和二叉查找树一样,查找元素比当前节点大,就从右子树继续查找比较,查找元素比当前节点小,就从左子树继续查找比较。查找过程就不再赘述了。

2、插入节点

插入节点是最麻烦的一个,它分为三种情况。我们一种一种看,这样比较有条理性。

第一种情况:新节点没有父节点

没有父节点只有一种情况,就是插入的节点是整棵树第一个节点,也就是根节点,为此我们只需要把插入节点涂成黑色就OK了。这也就保证了性质2:根节点是黑色的。

第二种情况:新节点的父节点是黑色

为此我们举一个例子,比如说上面的红黑树中,我们插入节点14。来看一下会发生什么情况?

红黑树二叉树的区别,红黑树和平衡二叉树区别(9)

这种情况我们发现新插入节点14的父节点就是黑色的。现在为了保证红黑树的性质,我们对照每个特性来检查一遍。只要有一条不满足,我们都需要调整。我们重新对照之后会发现每一条都符合。此时不需要调整。

第三种情况:新节点的父亲节点为红色

我们还是举个例子,比如我们在最开始的红黑树基础之上插入节点21,此时会发生什么情况呢?

红黑树二叉树的区别,红黑树和平衡二叉树区别(10)

此时还是老规矩,对照着红黑树的5个特征一个一个来看,只要是违反了一条就需要做出调整。我们来看一下:

(1)每个节点只有两种颜色:红色和黑色。这一条满足。

(2)根节点是黑色的。这一条也满足。

(3)每个叶子节点(NIL)都是黑色的空节点。这一条满足。

(4)从根节点到叶子节点,不会出现两个连续的红色节点。这一条发现不满足。

就是上面这一条规则没有满足,所以我们此时需要调整?问题来了如何调整呢?因为直接看父节点没办法实现,所以还需要观察另外的节点,也就是新节点的叔叔节点。根据叔叔节点的颜色来调整。调整的方式有两种:变色和旋转。

(1)叔叔节点是红色:

此时插入的节点是21,但是叔叔节点是27,更好是红色。我们直接来看调整的步骤:

第一步:把新节点21的父节点22变成黑色。

红黑树二叉树的区别,红黑树和平衡二叉树区别(11)

此时重新看一下是否满足红黑树的五条特征了没,一条一条发现,第五条没有满足,也就是从任何一个节点出发,到叶子节点,这条路径上没有相同数目的黑色节点。比如从25出发。这时候怎么办呢?那就继续调整。

第二步:把22的父节点25变成红色

红黑树二叉树的区别,红黑树和平衡二叉树区别(12)

栏目热文

红黑树的高度和深度区别(红黑树的原理动态图)

红黑树的高度和深度区别(红黑树的原理动态图)

专注于Java领域优质技术,欢迎关注作者:JasonGaoH之前在公司组内分享了红黑树的工作原理,今天把它整理下发出来,...

2022-11-14 14:34:32查看全文 >>

红黑树与b+树区别(红黑树解决什么问题)

红黑树与b+树区别(红黑树解决什么问题)

树的定义树是包含n(n>1)个结点,n-1条边的有穷集,其中:(1)每个元素称为结点;(2)有一个特定的结点称为根...

2022-11-14 14:55:20查看全文 >>

红黑树和平衡二叉树的优缺点(红黑树为什么是平衡二叉树)

红黑树和平衡二叉树的优缺点(红黑树为什么是平衡二叉树)

1 引言预防针:红黑树本来就是基本算法中的难点,所以看此文时建议先有点预备心理或知识铺垫,没接触过RBT而直接看此文的话...

2022-11-14 14:09:12查看全文 >>

红黑树为什么叫平衡二叉树(详解什么是平衡二叉树)

红黑树为什么叫平衡二叉树(详解什么是平衡二叉树)

前言面试过程中,多多少少会问一点数据结构(二叉树)的问题,今天我们来复习一下二叉树的相关问题,文末总结。1. 二叉树的由...

2022-11-14 14:52:59查看全文 >>

二叉树和红黑树(二叉树和树的关系)

二叉树和红黑树(二叉树和树的关系)

红黑树在工程中的使用,红黑树是平衡树的一种。1. 红黑树顺序的功能2. 快速查找的功能1.二叉树插入1. 如果比当前根节...

2022-11-14 14:17:23查看全文 >>

红黑树与平衡二叉树的区别(红黑树平衡树对比)

红黑树与平衡二叉树的区别(红黑树平衡树对比)

红黑树是每个节点都带有颜色属性的二叉查找树,颜色或红色或黑色。简单说就是可用于二分查找的(二叉查找树),且高度是平衡的(...

2022-11-14 14:54:56查看全文 >>

红黑树一定是平衡二叉树吗(红黑树是一个平衡的二叉排序树)

红黑树一定是平衡二叉树吗(红黑树是一个平衡的二叉排序树)

二叉搜索树的局限性 上一节较为详细的介绍了C语言中的二叉搜索树,提到数据采取二叉搜索树的结构存储,可以获得不错的搜索性能...

2022-11-14 14:51:45查看全文 >>

有序树和二叉树的区别(二叉判定树和二叉排序树的区别)

有序树和二叉树的区别(二叉判定树和二叉排序树的区别)

树这些基本的东西必须了解一下!数据结构之树的一些事儿树(英语:tree)是一种抽象数据类型(ADT)或是实作这种抽象数据...

2022-11-14 14:19:14查看全文 >>

马拉松赛前一个月怎么训练计划(马拉松赛前一周怎么安排)

马拉松赛前一个月怎么训练计划(马拉松赛前一周怎么安排)

2019宜昌国际马拉松暨全国马拉松锦标赛(宜昌站),将于10月27日上午7:30在湖北宜昌市鸣枪。宜昌国际马拉松创办于2...

2022-11-14 14:25:32查看全文 >>

马拉松赛前两个月训练计划(马拉松赛前一月训练表)

马拉松赛前两个月训练计划(马拉松赛前一月训练表)

想要跑得好,科学备战不能少!撰文/柳条编辑/柳条出品/马孔多跑步研究室下个月11月,马拉松比赛将进入一个高峰期,数场上万...

2022-11-14 14:23:44查看全文 >>

文档排行