红黑树是一种二叉平衡查找树,每个结点上有一个存储位来表示结点的颜色,可以是RED或BLACK。红黑树具有以下性质:(1) 每个结点是红色或是黑色(2) 根结点是黑色的(3) 如果一个结点是红色的,则它的两个儿子都是黑色的(4) 对于每个结点,从该结点到其子孙结点的所有路径上包含相同数目的黑结点通过红黑树的性质,可以保证所有基于红黑树的实现都能保证操作的运行时间为对数级别(范围查找除外。它所需的额外
转载
2023-10-05 11:43:45
95阅读
## 红黑树:自平衡的二叉搜索树
### 介绍
红黑树(Red-Black Tree)是一种自平衡的二叉搜索树,它在插入和删除节点时会进行自动的调整,以保持树的平衡。红黑树是由Rudolf Bayer在1972年发表的,是对二叉搜索树的一种改进和扩展。
### 特性
红黑树具有以下特性:
1. 每个节点要么是红色,要么是黑色。
2. 根节点是黑色的。
3. 叶子节点(NIL节点,即空节点
原创
2023-09-28 17:05:49
33阅读
在学习红黑树之前,需要先理解二叉查找树(Binary Search Tree)。一、二叉查找树二叉查找树(BST)特性 1. 左子树上所有节点的值均小于或等于它的根节点的值。
2. 右子树上所有节点的值均大于或等于他的根节点的值。
3. 左、右子树也分别为二叉排序树。(1)查找 查找一下节点值为10 的节点。 1. 根节点为9,10>9,查看右孩子13。 2. 10<
转载
2021-01-22 23:00:25
347阅读
2评论
红黑树(Red-Black Tree)是一种非常重要的数据结构,在开发中我们时常能够见到它的身影,如JDK中的TreeMap、TreeSet以及JDK8中的HashMap,在它们的底层实现中都使用到了红黑树。红黑树的学习成本还是挺高的,为了掌握这一数据结构,我们决定从二叉排序树开始讲起,然后逐步衍生到AVL树、2-3树,最后再过渡到红黑树。本篇就是此系列的第一篇:二叉排序树。二叉排序树(Bina
转载
2023-08-04 11:56:26
66阅读
因为工作忙的原因,有一段时间没有写文章了,来继续我们的Java源码之旅。上几篇文章我们主要介绍了HashMap的一些基础内容,也介绍了HashMap的底层数据结构:数组+链表+红黑树,数组、链表这两个数据结构非常的简单,我们就不着重介绍了,今天我们开始说一下红黑树。红黑树的5个特性必须牢牢地记得:特性1:每个节点要么是黑色的,要么是红色的,没有第三种颜色特性2:根节点一定是黑色的特性3:所有的叶子
转载
2023-11-07 11:25:08
113阅读
小灰 程序员小灰 ————— 第二天 —————————————————二叉查找树(BST)具备什么特性呢?1.左子树上所有结点的值均小于或等于它的根结点的值。2.右子树上所有结点的值均大于或等于它的根结点的值。3.左、右子树也分别为二叉排序树。下图中这棵树,就是一颗典型的二叉查找树:1.查看根结点9:2.根据二叉查找树左子树小、右子树大的特性,10 > 9,因此值为10的结点只可能在
原创
2021-05-19 10:03:05
249阅读
玻璃猫 程序员小灰 ————————————————————————二叉查找树(BST)具备什么特性呢?1.左子树上所有结点的值均小于或等于它的根结点的值。2.右子树上所有结点的值均大于或等于它的根结点的值。3.左、右子树也分别为二叉排序树。下图中这棵树,就是一颗典型的二叉查找树:1.查看根节点9:2.由于10 > 9,因此查看右孩子13:3.由于10 < 13,因此查看左孩子11:
原创
2021-05-30 22:13:31
237阅读
漫画:什么是红黑树?
转载
2021-07-30 15:46:02
251阅读
漫画:什么是红黑树?2017年,小灰曾经发布过一篇关于红黑树的漫画,当时由于时间仓促,部分知识点一带而过,并没有讲解得很细致全面。最近,小灰把这个知识点重新做了总结,分成上下两篇,希望大家把红黑树这个重要的数据结构彻底吃透。—————第二天—————————————————二叉查找树(BST)具备什么特性呢?1.左子树上所有结点的值均小于或等于它的根结点的值。2.右子树上所有结点的值均大于或等于它
原创
2020-11-11 20:56:57
404阅读
漫画:什么是红黑树?
转载
2021-07-30 15:45:48
135阅读
漫画:什么是红黑树?————————————————————————二叉查找树(BST)具备什么特性呢?1.左子树上所有结点的值均小于或等于它的根结点的值。2.右子树上所有结点的值均大于或等于它的根结点的值。3.左、右子树也分别为二叉排序树。下图中这棵树,就是一颗典型的二叉查找树:1.查看根节点9:2.由于10>9,因此查看右孩子13:3.由于10<13,因此查看左孩子11:4.由于1
原创
2020-11-14 20:51:37
126阅读
树的工作原理,今天把它整理下发出来,希望能对大家有所帮助,对自己也算是一个知识点的总结。 这篇文章算是我写博客写公众号以来画图最多的一篇文章了,没有之一,我希望...
转载
2022-09-23 08:39:26
35阅读
真正的帮助大家理解红黑树:一、红黑树所处数据结构的位置:在JDK源码中, 有treeMap和JDK8的HashMap都用到了红黑树去存储红黑树可以看成B树的一种:从二叉树看,红黑树是一颗相对平衡的二叉树二叉树-->搜索二叉树-->平衡搜索二叉树--> 红黑树从N阶树看,红黑树就是一颗 2-3-4树N阶树-->B(B-)树故我提取出了红黑树部分的源码,去说明红黑树的理解看之前
转载
2023-09-29 15:14:29
43阅读
前言红黑树(Red Black Tree) 是一种自平衡二叉查找树。JDK1.8中,当HashMap的链表达到一定长度后,会将链表转化为红黑树。同时,TreeMap中数据的存储结构就是红黑树。红黑树红黑树定义红黑树是一个平衡的二叉树,但不是一个完美的平衡二叉树。红黑树是在普通二叉树上,对每个节点添加一个颜色属性形成的,同时整个红黑二叉树需要同时满足一下五条性质 :节点是红色或者是黑色 在树里面的节
转载
2023-08-20 16:54:50
90阅读
简介红黑树又名Red Black Tree(RBT),是一种自平衡二叉查找树,RBT中的每个节点都有颜色,要么是红色要么是黑色。有以下性质:根节点是黑色叶子节点都是不存储数据的黑色空节点红色节点的儿子节点都是黑色任何一个节点到其所有叶子节点路径上的黑色节点数都相同注意:性质2中的叶子节点是只为空(NIL或null)的黑色节点,不存储任何数据。性质3和4可以保证没有一条路径会比其他路径长出一倍,因为
转载
2024-08-21 14:37:31
112阅读
介绍 红黑树(Red Black Tree)是一种自平衡的二叉查找树,它和AVL树类似,都是在进行插入和删除操作时通过特定操作保持二叉查找树的平衡,从而获得较高的查找性能,它虽然结构复杂,但是它可在时间复杂最坏情况O(logn)内,完成查找、插入、删除操作;约束性质1、节点是红色或黑色; 2、根节点是黑色; 3、每个空节点(NIL节点)是黑色的; 4、每个红色节点的两个子节点都是黑色;(表明:从
转载
2023-09-07 16:21:23
100阅读
漫画:什么是红黑树?(下篇)上周,我们初步介绍了红黑树存在的意义,以及红黑树的插入操作,没看过的小伙伴可以点击下面链接:漫画:什么是红黑树?今天,我们来继续介绍红黑树的删除操作,以及红黑树和其他平衡二叉树的比较。二叉查找树是如何进行删除操作的呢?可以分成三种情况。情况1,待删除的结点没有子结点:上图中,待删除的结点12是叶子结点,没有孩子,因此直接删除即可:情况2,待删除的结点有一个孩子:上图中,
原创
2020-11-11 20:41:09
208阅读
树的删除操作,不得不提 图解:什么是红黑树?(中篇)中所讲的红黑树的插入操作。与红黑树插入操作类似,红黑树的删除操作也是通过 重新着色(recoloring) 和 ...
转载
2022-10-11 21:07:16
18阅读
时间送达干货。 转自景禹 什么
转载
2022-10-12 11:13:05
51阅读
黑树的插入 在一棵AVL树中,我们通过左旋和右旋来调整由于插入和删除所造成的不平衡问题。在红黑树中,可以使用两种方式进行平衡操作: 重新着色旋转 当红黑树中出现...
转载
2022-10-12 11:13:36
23阅读