当前位置:首页 > 经验 >

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

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

有左子树找到相应的节点值10:

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

不过二叉查找树有一些问题,当不断插入一些元素时,可能会出现不平横的情况,即如下图所示:

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

从这种情况可以看出,明显存在左子树和右子树深度相差过多,在使用平衡情况下的二叉查找树是时间复杂度为logn,而出现这种极端情况的话,想要查9的位置就需要每一次都遍历下一个右子树,很有可能时间复杂度变为n(与数组普通查询的时间复杂度相同)。

基于上述情况,引入了平衡二叉树,红黑树即为平衡二叉树(是一 棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。)和二叉查找树的结合。

2 红黑树

红黑树是每个节点都带有颜色属性的二叉查找树:

2.1 节点是红色或黑色;

2.2 根节点一定是黑色;

2.3 每个叶节点都是黑色的空节点(NIL节点);

2.4 每个红节点的两个子节点都是黑色的(从每个叶子到根的所有路径上不能有两个连续的红节点,即对于每层来说,除了NIL节点,红黑节点是交替的,第一层是黑节点那么其下一层肯定都是红节点,反之一样);

2.5 从任一节点到其每个叶子节点的所有路径都包含相同数目的黑色节点;

这五条性质约束了红黑树,可以通过数学证明来证明,满足这五条性质的二叉树可以将查找、删除维持在对数时间内。

正是由于这些原因使得红黑树是一个平衡二叉树。

当我们进行插入或者删除操作时所作的一切操作都是为了调整树使之符合这五条性质(达到平衡,且符合二叉查找树的要求)。

这些约束强制了红黑树的关键性质:从根到叶子的最长的可能路径不多于最短的可能路径的两倍长。结果是这个树大致上是平衡的。因为操作比如插入、删除和查找某个值的最坏情况时间都要求与树的高度成比例,这个在高度上的理论上限允许红黑树在最坏情况下都是高效的,而不同于普通的二叉查找树。

要知道为什么这些特性确保了这个结果,注意到性质4导致了路径不能有两个毗连的红色节点就足够了。最短的可能路径都是黑色节点,最长的可能路径有交替的红色和黑色节点。因为根据性质5所有最长的路径都有相同数目的黑色节点,这就表明了没有路径能多于任何其他路径的两倍长。

红黑树在函数式编程中也特别有用,在这里它们是最常用的持久数据结构之一,它们用来构造关联数组和集合,在突变之后它们能保持为以前的版本。除了O(log n)的时间之外,红黑树的持久版本对每次插入或删除需要O(log n)的空间。

如下图就是一棵红黑树:

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

向红黑树中插入节点14(一般默认插入节点是红色的):

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

栏目热文

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

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

很早之前就想写一篇关于红黑树的文章,但是由于担心自己理解的不透彻,就一直不敢下笔。于是在重新看了很多篇文章和资料之后,决...

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

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

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

专注于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查看全文 >>

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

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

二叉搜索树的局限性 上一节较为详细的介绍了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查看全文 >>

马拉松赛前需要做好哪些准备工作

马拉松赛前需要做好哪些准备工作

关注慧跑,助您轻如羽、跑无伤无论是业余跑者,还是精英马拉松运动员,要想突破自己,实现PB,都必须进行一个阶段完整的周期训...

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

文档排行