当前位置:首页 > 经验 >

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

来源:原点资讯(m.360kss.com)时间:2022-11-14 14:09:12作者:YD166手机阅读>>

1 引言

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

为了数据的查询跟增删方便,系统引入了二叉查找树,它具有左节点 < 根节点 <右节点 的属性,

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

但是这种设定跟数据的插入顺序有很大关系,比如你插入的是1234,二叉查找树会退化为链表。

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

为了避免链表结构的出现,研究者们又提出了平衡二叉树跟红黑树。平衡二叉树要求任意一个节点的左深度跟右深度差值绝对值不能大于1,如果插入后超过了1会通过左右各种旋转来更改连接的变化,最终实现左右深度差不大于1的这个要求。

平衡二叉树的深度要求太过完美,当涉及大量增删时,可能会太多时间用在调节平衡上,为了平衡投入跟产出比,又设计了红黑树。

红黑树算是一个比较复杂的数据结构了,除非你面字节,可能让你手写红黑树。一般情况下你只要说出红黑树构造的五大背后逻辑,展现你对底层数据结构的深度跟广度即可。

本文不会着重说红黑树的增删过程,因为你百度看下权威教程或源码,然后跟着追踪就知道大致流程了,本文会说下红黑树为何如此设计,它跟2-3树有啥联系

2 2-3 树2.1 定义

为了保证查找树的平衡性,需要一些灵活性,因此我们允许树中的一个结点保存多个键。

  1. 2结点:含有一个键和两条链接,左链接指向的2-3树中的键都小于该结点,右链接指向的2-3树中的键都大于该结点。
  2. 3结点:含有两个键和三条链接,左链接指向的2-3树中的键都小于该结点,中链接指向的2-3树中的键都位于该结点的两个键之间,右链接指向的2-3树中的键都大于该结点。
  3. 4节点:含有三个键和四条链接,大致的思路跟3节点类似。需注意在2-3树中,4节点是短暂存在的,会被转化为2节点或3节点。

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

2.2 查找

要判断一个键是否在树中,我们先将它和根结点中的键比较。如果它和其中的任何一个相等,查找命中。否则我们就根据比较的结果找到指向相应区间的链接,并在其指向的子树中递归地继续查找。如果这是个空链接,查找未命中,可以发现跟简单的二叉树查找类似。

2.3 插入

要在2-3树中插入一个新结点,我们可以和二叉查找树一样先进行一次未命中的查找,然后把新结点挂在树的底部。但这样的话树无法保持完美平衡性。使用2-3树的主要原因就在于它能够在插入之后继续保持平衡。

  1. 如果未命中的查找结束于一个2结点:只要把这个2结点替换为一个3结点,将要插入的键保存在其中即可。
  2. 只有一个3结点的树,向其插入一个新数据:此时我们可以创建个临时4节点,然后将其转化为由3个2节点组成的2-3树

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

栏目热文

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

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

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

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

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

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

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

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

为什么用红黑树而不是二叉树(红黑树和二叉树优缺点)

为什么用红黑树而不是二叉树(红黑树和二叉树优缺点)

上两节,我们依次讲了树、二叉树、二叉查找树。二叉查找树是最常用的一种二叉树,它支持快速插入、删除、查找操作,各个操作的时...

2022-11-14 14:26:38查看全文 >>

通俗讲红黑二叉树原理(红黑树为什么是平衡二叉树)

通俗讲红黑二叉树原理(红黑树为什么是平衡二叉树)

【51CTO.com原创稿件】 学过数据结构都知道二叉树的概念,而又有多种比较常见的二叉树类型,比如完全二叉树、满二叉树...

2022-11-14 14:42:53查看全文 >>

红黑树和平衡二叉树区别(详解什么是平衡二叉树)

红黑树和平衡二叉树区别(详解什么是平衡二叉树)

一,AVL树(平衡二叉树)(1)简介AVL树是带有平衡条件的二叉查找树,一般是用平衡因子差值判断是否平衡并通过旋转来实现...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

文档排行