ava什么类型使用了红黑树java红黑树特点mobccb的技术博客

红黑树是一种近似平衡的树,没有像AVL树那样严格的平衡,但是AVL树为了保证它的绝对平衡,对插入和删除的效率有一定的影响,而红黑树插入和删除的效率就要高的多。同时,它又是一颗二叉查找树,使得它查找的效率也很高,查找的时间复杂度为O(logn),所以红黑树要优于AVL树。

步骤:

步骤:

说明:此处具有二分查找的思想,只不过是从数据结构的层面实现的,从一个结点开始往下找,如果比key大,则从左边递归寻找,如果比key小,则从右边递归寻找,如果找到叶子节点还没找到就结束,叶子结点指的是null结点

从红黑树的性质可知,插入的结点只能是红结点,因为如果插入黑结点势必会造成树的不平衡,而插入红结点则不一定会造成树的不平衡,具体的操作分为以下几种情况:

插入后不用进行任何处理

把父结点和叔叔结点变黑,祖父结点变红,以祖父结点为当前结点,继续进行平衡处理,处理完成后需把根结点变黑

以父结点为旋转结点进行左旋,然后再以祖父结点进行右旋,平衡处理完成

以祖父结点为旋转结点进行右旋,平衡处理完成

红黑树的删除与普通二叉树的删除不同,它的原理是找到删除结点的后继结点或子结点来替换掉这个结点,由此也就把这个结点从红黑树中删除了,至于为何会这样做,一切都是为了使平衡操作更加简单,以下是具体的删除操作步骤:

由红黑树的性质可知,该删除结点只能为黑,且删除结点的子结点只能为红,子结点的子结点只能为叶子结点,此时只要让子结点的父结点指向删除结点的父结点,父结点指向删除结点的子结点即可完成删除操作,因为删掉了一个黑结点,红黑树不再平衡,所以还需要把删除结点的子结点变为黑才能使树重新平衡

因为删除结点为红,删除不影响树的平衡,而且删除结点只有叶子结点,叶子结点只能为黑,所以只要让叶子结点的父结点指向删除结点的父结点,父结点指向叶子结点即可完成删除操作

首先让叶子结点的父结点指向删除结点的父结点,父结点指向叶子结点,即先把删除结点从树中删掉

以父结点为旋转结点进行左旋,重新判断叶子结点的兄弟结点的颜色,然后根据不同颜色进行不同的处理

把兄弟结点变红,以叶子结点的父结点为当前结点,重新进行平衡处理

先以兄弟结点为旋转结点进行右旋,然后再把父结点的颜色赋给兄弟结点,父结点变黑,兄弟结点的右结点变黑,以父结点为旋转结点进行左旋,平衡处理完成

把父结点的颜色赋给兄弟结点,父结点变黑,兄弟结点的右结点变黑,以父结点为旋转结点进行左旋,平衡处理完成

先找到删除结点的后继结点,然后用后继结点替换掉删除结点,由红黑树的性质可知,后继结点只能有一个子结点或只能有叶子结点,所以接下来就以后继结点为当前结点,继续进行上面3种情形的处理

红黑树很复杂,这些都是我的个人理解,如果有不对的地方大家可以指出来,一起学习一起进步

红黑树是最长路径不超过最短路径二倍的二叉搜索树,且通过颜色(红/黑)控制平衡,确保插入、删除、查找的时间复杂度均为O(log N)二叉搜索树二叉搜索树(Binary Search Tree)是一种特殊的二叉树,存储的数据满足规则: 左子树<根,右子树>根(每个子树都满足),中序遍历时数据是有序的。

平衡二叉搜索树平衡二叉搜索树(Balanced Binary Search Tree)的每个节点的左右子树高度差不超过 1,它可以在 O(logn) 时间复杂度内完成插入、查找和删除操作,最早被提出的自平衡二叉搜索树是 AVL 树。AVL 树在执行插入或删除操作后,会根据节点的平衡因子来判断是否平衡,若非平衡则执行旋转操作来维持树的平衡,本文主要是对红黑树相关的讲解,如果大家感兴趣可以去了解一下

本篇我们讲红黑树的经典实现,Java中对红黑树的实现便采用的是经典红黑树。前一篇文章我们介绍过左倾红黑树,它相对来说比较简单,需要大家看完上篇再来看这一篇,因为旋转等基础知识不会再本篇文章中赘述。本篇的大部分内容参考 《算法导论》和 Java 实现红黑树的源码,希望大家能够有耐心的看完。在正文开始之前我们先看如下问题:为什么红黑树比AVL树要应用得更广泛呢?关于红黑树和 AVL 树,大家可能看过“

红黑树本身并不复杂,只是在插入删除的时候情况比较多,如果强行记忆的话会显得比较困难,而且容易忘记。所以以前对红黑树一直没有很好的掌握。恰好这次借着复习数据结构的机会,静下心来仔细的学习了一下红黑树,并用Java实现了一番。所以用这篇文章把我对红黑树的操作的理解记录下来,在理解的基础上记忆会容易得多,这样以后就不用重复学习啦!1. 红黑树的定义红黑树是一颗二叉查找树,且具有如下特性:     (1)

一、红黑树介绍1、R-B Tree概念红黑树(Red Black Tree,简称R-B Tree) 是一种自平衡二叉查找树,它虽然是复杂的,但它的最坏情况运行时间也是非常良好的,并且在实践中是高效的: 它可以在O(log n)时间内做查找,插入和删除,这里的n 是树中元素的数目。红黑树是特殊的二叉查找树,意味着它满足二叉查找树的特征:任意一个节点所包含的键值,大于等于左孩子的键值,小于等于右孩子的

本篇博客导图 简介&我的理解R-B Tree 红黑树简介-3个特性红黑树是二叉查找树的一种,与AVL平衡二叉树相差不大,也是左小右大的数据存储结构,重点在于查找数据,同样是O(height)的时间复杂度。相对于AVL树的靠高度平衡,红黑树是靠颜色平衡的,而为了维持接下来的几个特性,使得它在插入或者删除操作以后必须进行旋转和重新着色才可以保持红黑树特质. 它主要有以下几种特性(虽然太过形式化

红黑树的实现红黑树算是一种二叉搜索树的升级版,解决了顺序插入时不会像二叉搜索树那样形成链式的结构,增加了左旋右旋的机制,使二叉树基于平衡。1. 红黑树的特点每个结点不是红色就是黑色。不可能有连在一起的红色结点。根结点一定为黑色。每个红色结点的两个子结点都是黑色。2. 旋转与颜色变换规则2.1 颜色变换当前结点的父亲是红色,且叔叔结点也是红色时:把父结点设为黑色把叔叔结点设为黑色把爷爷结点设为红色把

因为工作忙的原因,有一段时间没有写文章了,来继续我们的Java源码之旅。上几篇文章我们主要介绍了HashMap的一些基础内容,也介绍了HashMap的底层数据结构:数组+链表+红黑树,数组、链表这两个数据结构非常的简单,我们就不着重介绍了,今天我们开始说一下红黑树。红黑树的5个特性必须牢牢地记得:特性1:每个节点要么是黑色的,要么是红色的,没有第三种颜色特性2:根节点一定是黑色的特性3:所有的叶子

红黑树(Red-Black Tree)是一种非常重要的数据结构,在开发中我们时常能够见到它的身影,如JDK中的TreeMap、TreeSet以及JDK8中的HashMap,在它们的底层实现中都使用到了红黑树。红黑树的学习成本还是挺高的,为了掌握这一数据结构,我们决定从二叉排序树开始讲起,然后逐步衍生到AVL树、2-3树,最后再过渡到红黑树。本篇就是此系列的第一篇:二叉排序树。二叉排序树(Bina

什么是红黑树?红黑树为一种特殊的二叉查找树,但相较于二叉查找树,红黑树自平衡的二叉查找树。红黑树和二叉平衡树的区别 1、红黑树放弃了追求完全平衡,追求大致平衡,在与平衡二叉树的时间复杂度相差不大的情况下,保证每次插入最多只需要三次旋转就能达到平衡,实现起来也更为简单。 2、平衡二叉树追求绝对平衡,条件比较苛刻,实现起来比较麻烦,每次插入新节点之后需要旋转的次数不能预知。 所以红黑树有着比二叉平衡树

红黑树和平衡二叉树的构建思想是类似的,都是在插入过程中对二叉排序树进行调整,从而提升性能,它的增删改查均可以在O(lg N)内完成。一、红黑树的定义红黑树是一颗二叉排序树,除了具有二叉排序树的特点与性之外,还具有以下的一些性质:1、 每个节点要么是黑色要么是红色2、 根节点是黑色3、 每个叶节点(NIL)是黑色(这里说的叶节点是指为空的叶子结点)4、 如果一个节点时红色的,则它的两个儿子都是黑色的

前言红黑树(Red Black Tree) 是一种自平衡二叉查找树。JDK1.8中,当HashMap的链表达到一定长度后,会将链表转化为红黑树。同时,TreeMap中数据的存储结构就是红黑树。红黑树红黑树定义红黑树是一个平衡的二叉树,但不是一个完美的平衡二叉树。红黑树是在普通二叉树上,对每个节点添加一个颜色属性形成的,同时整个红黑二叉树需要同时满足一下五条性质 :节点是红色或者是黑色 在树里面的节

目录1 特征描述1.1 性质1.2 与2-3树的对应关系1.3 结点2 平衡化2.1 左旋2.2 右旋3 插入操作3.1 向2-结点插入新键(可能旋转3-结点)3.2 向3-结点插入新键(必然拆分4-结点)4 两个重要的颜色变换4.1 向3-结点插入新键时颜色反转4.2 每次插入操作后根节点重设为黑5 Java代码实现 1 特征描述1.1 性质含有红黑链接的二叉查找树;红链接均为左链接;没有任何

前言红黑树是一种特殊的B树是B树种2-3-4树的一种特殊实现,红黑树保证了每个节点只会有两个子节点,通过对每个节点进行染色,然后通过不同颜色的节点组合来分别代表2-3-4的2节点、3节点、4节点树的情况。在学习红黑树之前,我们需要先去了解2-3-4树。一、 B树那么如果想要对红黑树有一个较为深刻的理解,我认为首先去理解其根源,也就是B树是必不可少的1.1 概念树形结构首先可以分为等叉树和不等叉树,

前言前段时间在研究 JDK1.8 的 hashmap 源码,看到 put 方法的插入环节,遇到了红黑树,不得不停止阅读源码的过程,因为还没掌握红黑树是无法完全读透 hashmap 源码的。红黑树作为一种数据结构,它被应用得非常多,可能很多人不认识它,但其实它已经在默默为我们的代码在发光发热。例如,你只要在 Java 中用到 map,基本上就是在用红黑树(当元素个数到达八个时链表转红黑树)。PS:在

图解红黑树 目录图解红黑树一、红黑树的五条规则二、红黑树的三种变换2.1.变色2.2.左旋转2.3.右旋转三、红黑树的插入操作3.1.情况13.2.情况23.3.情况33.4.情况43.5.情况53.6.案例插入10插入9插入8插入7插入6插入5插入4插入3插入2**插入1**四、红黑树的删除操作 一、红黑树的五条规则红黑树除了符合二叉搜索树的基本规则外,还添加了以下特性:规则1:节点是红色或黑色

JDK1.8中的HashMap的结构为 数组+链表+红黑树,本文基于JDK1.8中的HashMap源码中的红黑树操作进行学习分析来实现红黑树的新增、删除、查询。需要提到一点是JDK源码中在 if 判断语句中进行了大量的赋值操作,阅读一定要注意 if 中是判断还是赋值。红黑树是一种含有红黑结点并能自平衡的二叉查找树。每个节点要么是黑色,要么是红色。根节点是黑色。每个叶子结点(NIL)是黑色。每个红色

一、红黑树比较重要的特性1、红黑树每个节点要么是黑色、要么是红色2、根节点是黑色3、红色节点的所有儿子都是黑色节点(也就是说从根节点到叶子结点的路径上不能出现连续的红色节点)4、从根节点到叶子结点的每一条路径上拥有相同的黑色节点个数n个节点的红黑树的最大深度不超过2log(n+1),其首先是一颗查找树,其次是平衡树的一个变种。其具有o(logn)的插入删除操作复杂度,操作性能比较好,java的Tr

红黑树是一种自平衡二叉查找树(binary search tree,BST),红黑树是一种比较复杂的数据结构,红黑树查找、插入、删除元素的时间复杂度为O(log n),n是树中元素的数目.文章的要讲的知识点如下:  一、红黑树的基本介绍    红黑树插入节点    红黑树删除节点  二、红黑树应用实例:Jdk中的TreeMap一、红黑树的基本介绍   二叉查找树(binary search t

DEGREESDEGREES(expr)功能说明将弧度值转换为角度值。版本v3.3.3.0返回结果类型DOUBLE。适用数据类型数值类型(TINYINT、SMALLINT、INT、BIGINT、FLOAT、DOUBLE 及其无符号类型)。嵌套子查询支持适用于内层查询和外层查询。适用于表和超级表。使用说明若 expr 为 NULL,返回 NULL。转换公式:degree = radian × 180

什么是代理模式? 代理模式是一种结构型设计模式,它允许你提供一个替代物或占位符来控制对另一个对象的访问。代理对象充当原始对象的接口,客户端通过代理来间接访问原始对象,从而可以在不改变原始对象代码的情况下添加额外的功能。 代理模式特别有用,因为我们可以利用接口和类型系统来确保代理和真实对象具有相同的接 ...

作为刚入门的后端小白,我第一次独立开发的城市公交查询 API 就出了状况 —— 接口被匿名工具高频调用,导致服务器带宽连续 3 天超标,用户查询时频繁卡顿。试了几款免费防护工具,要么需要编写复杂配置,要么在 Apache 环境下无法正常运行,直到遇到雷池 WAF,才彻底解决了我的防护难题。 雷池 W ...

该指南围绕 k3s 展开,先对比其与 Docker、K8s 的核心差异,突出 k3s 轻量、易部署的特点(如单命令安装、低资源需求)。接着梳理 k3s 关键概念(Pod、Service、Namespace 等)及 systemctl 服务管理方式,分类列出服务管理、安装卸载、集群资源操作等命令。实操... ...

THE END
0.树的特点有哪些是什么树有哪些特点树的特点有哪些是什么 树的特点:1、树木可以调节气候,保持生态平衡,使空气变得清新。2、树具有防风固沙的特点,还能吸收各种粉尘。3、树木的分泌物能杀死细菌。4、树木能够减少噪音污染,保护人类的听觉。 树的特点 1、矮柳树:矮柳树的高度只有3-5厘米,一般生活在温度比较低的高山上,喜欢冻土地带,对于水的要求也是在20摄氏度左右,这 jvzquC41o0zjcwvklwt/exr1lkgp{~4fqe565B;20jznn
1.华夏常青树特惠版2.有何优缺点?有什么特点?华夏常青树特惠版2.有何优缺点?有什么特点? 近期互联网保险市场都十分热门,因为在10月份的时候,有一则保险新规经由银保监会发布出来,不但对今后互联网保险产品做出了明确规定,还要求目前在售的所有互联网保险产品都要在2021年12月31日前下架。 一听到这样的消息,越来越多人就要赶上这末班车,因为都担心一旦新规jvzquC41yy}/ky65:0ipo8rr13>8::<:47<45A<9;884::>0jvsm
2.查找树综述简单总结下二叉查找树,红黑树,B树,B+树,B*树,AVL树,R树的特点关系与用处。 首先他们都是查找树(search tree),支持多种动态集合的操作,search, minimum,maximum,predecessor,successor,insert,delete,既可以用作字典,也可以用作优先队列。一般而言,各种树的操作都与树的高度成正比。 jvzquC41dnuh0lxfp0tfv8~uw3691jwvkerf1mjvckrt1@:577<9
3.数据结构AVL树(全)什么是AVL树? AVL树是最先发明的自平衡二叉查找树。在AVL树中任何节点的两个子树的高度最大差别为1,所以它也被称为高度平衡树。增加和删除可能需要通过一次或多次树旋转来重新平衡这个树。 AVL树的特点及形成原因 AVL树本质上是一棵高度平衡的二叉搜索树;先回顾二叉搜索树的基本概念; 二叉搜索树基本概念 二叉查找树(Binary SearchTjvzquC41dnuh0lxfp0tfv8|gkzooa==7829378ftvkimg8igvcomu8646781::8