红黑树本身并不复杂,只是在插入删除的时候情况比较多,如果强行记忆的话会显得比较困难,而且容易忘记。所以以前对红黑树一直没有很好的掌握。恰好这次借着复习数据结构的机会,静下心来仔细的学习了一下红黑树,并用Java实现了一番。所以用这篇文章把我对红黑树的操作的理解记录下来,在理解的基础上记忆会容易得多,这样以后就不用重复学习啦!1. 红黑树的定义红黑树是一颗二叉查找树,且具有如下特性: (1)
转载
2024-06-05 10:37:58
39阅读
java红黑树实现:定义红黑树是一种自平衡二叉树,红黑树和AVL树一样都对插入时间、删除时间和查找时间提供了最好可能的最坏情况担保。这不只是使它们在时间敏感的应用如实时应用(real time application)中有价值,而且使它们有在提供最坏情况担保的其他数据结构中作为建造板块的价值;例如,在计算几何中使用的很多数据结构都可以基于红黑树。性质  
转载
2023-06-25 14:46:06
114阅读
红黑树的实现红黑树算是一种二叉搜索树的升级版,解决了顺序插入时不会像二叉搜索树那样形成链式的结构,增加了左旋右旋的机制,使二叉树基于平衡。1. 红黑树的特点每个结点不是红色就是黑色。不可能有连在一起的红色结点。根结点一定为黑色。每个红色结点的两个子结点都是黑色。2. 旋转与颜色变换规则2.1 颜色变换当前结点的父亲是红色,且叔叔结点也是红色时:把父结点设为黑色把叔叔结点设为黑色把爷爷结点设为红色把
转载
2024-05-30 12:38:03
33阅读
1、红黑树概述红黑树是一种近似平衡的树,没有像AVL树那样严格的平衡,但是AVL树为了保证它的绝对平衡,对插入和删除的效率有一定的影响,而红黑树插入和删除的效率就要高的多。同时,它又是一颗二叉查找树,使得它查找的效率也很高,查找的时间复杂度为O(logn),所以红黑树要优于AVL树。2、红黑树特性根结点为黑结点为红或黑不能有连续的两个红结点(红结点的子结点必须为黑)任一结点到它们子孙结点的所有路径
转载
2024-03-02 10:33:06
79阅读
一、背景:HashMap在开发中经常用,面试源码方面也会经常问到,今天总结一下,包括在后面有相关面试题。本文不会对红黑树代码由太多深入研究,特别是删除方面太复杂,面试也不会问到,知道红黑树基本实现原理就可以了。源码基于jdk1.8,我们都知道1.8版本的HashMap有很大改变,通过数组+链表+红黑树实现。二、图例:关于链表和红黑树相关内容,可以参考:Java数据结构和算法(四)--链表Java数
转载
2023-11-01 21:34:03
42阅读
1.红黑树的性质 2.红黑树各种操作复杂度 3.红黑树相比于BST和AVL树有什么优点? 4.红黑树相对于哈希表,在选择使用的时候有什么依据? 5.java集合TreeMap. 6.java集合TreeSet 7.如何扩展红黑树来获得比某个结点小的元素有多少个?1.红黑树的性质(1)每个节点或者是黑色,或者是红色。 (2)根节点是黑色。 (3)每个叶子节点(NIL)是黑色。 [注意:这里叶子节点,
转载
2023-11-11 23:37:01
83阅读
本文出自:一丶概述上一篇讲HashMap,避开了红黑树,这边讲TreeMap,好好说一下红黑树。二丶概述目录图三丶聊聊TreeMap数据结构:TreeMap 是一个有序、非同步的key-value集合,基于红黑树(Red-Black tree)实现有序性。模型图:关于树: 1、树树(tree)是一种抽象数据类型(ADT),用来模拟具有树状结构性质的数据集合。它是由n(n>0)个有限节点通过连
转载
2023-11-27 17:01:41
81阅读
基本结构:> 每个节点或者是黑色,或者是红色;
> 根节点必须是黑色;
> 每个叶子节点是黑色﹔
Java实现的红黑树将使用null 来代表空节点,因此遍历红黑树时将看不到黑色的叶子节点,反而看到每个叶子节点都是红色的;
> 如果一个节点是红色的,则它的子节点必须是黑色的:(红节点不能连接红节点,但是黑节点可以连接黑节点)
从每个根到节点的路径上不会有两个连续的红色
转载
2023-11-02 16:18:44
42阅读
1、Collection (单列集合的顶级接口) 方法名说明boolean add(E e)添加元素boolean remove(Object o)从集合中移除指定的元素boolean removeIf(Object o)根据条件进行移除void clear()清空集合中的元素boolean contains(Object o)判断集合中是否存在指定的元素boolean isEmpty
转载
2023-10-06 09:58:07
110阅读
TreeMap的实现是红黑树算法的实现,所以要了解TreeMap就必须对红黑树有一定的了解,其实这篇博文的名字叫做:根据红黑树的算法来分析TreeMap的实现,但是为了与Java提高篇系列博文保持一致还是叫做TreeMap比较好。通过这篇博文你可以获得如下知识点: 1、红黑树的基本概念。 &nb
转载
2023-07-21 07:34:00
47阅读
图解红黑树 目录图解红黑树一、红黑树的五条规则二、红黑树的三种变换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:节点是红色或黑色
转载
2023-08-11 21:40:01
128阅读
前言红黑树是一种特殊的B树是B树种2-3-4树的一种特殊实现,红黑树保证了每个节点只会有两个子节点,通过对每个节点进行染色,然后通过不同颜色的节点组合来分别代表2-3-4的2节点、3节点、4节点树的情况。在学习红黑树之前,我们需要先去了解2-3-4树。一、 B树那么如果想要对红黑树有一个较为深刻的理解,我认为首先去理解其根源,也就是B树是必不可少的1.1 概念树形结构首先可以分为等叉树和不等叉树,
转载
2023-10-31 18:51:59
52阅读
前言前段时间在研究 JDK1.8 的 hashmap 源码,看到 put 方法的插入环节,遇到了红黑树,不得不停止阅读源码的过程,因为还没掌握红黑树是无法完全读透 hashmap 源码的。红黑树作为一种数据结构,它被应用得非常多,可能很多人不认识它,但其实它已经在默默为我们的代码在发光发热。例如,你只要在 Java 中用到 map,基本上就是在用红黑树(当元素个数到达八个时链表转红黑树)。PS:在
转载
2023-08-28 14:46:51
62阅读
一、红黑树比较重要的特性1、红黑树每个节点要么是黑色、要么是红色2、根节点是黑色3、红色节点的所有儿子都是黑色节点(也就是说从根节点到叶子结点的路径上不能出现连续的红色节点)4、从根节点到叶子结点的每一条路径上拥有相同的黑色节点个数n个节点的红黑树的最大深度不超过2log(n+1),其首先是一颗查找树,其次是平衡树的一个变种。其具有o(logn)的插入删除操作复杂度,操作性能比较好,java的Tr
转载
2023-07-04 14:13:51
116阅读
引子昨天模拟面试,面试官问到了 哈希map 和 treeMap 我说都是使用了 红黑树 问我有什么区别 还有复杂度 稍微一深入讨论 我就废掉了 先亡羊补牢一下文章目录引子1)、使用层次上的区别:HashMap:TreeMap:2)、底层数据结构HashMap:HashTree:总结:红黑树特征:红黑树左旋、右旋:补充复杂度总结
1)、使用层次上的区别:
HashMap:数组+链表存储key-va
原创
2022-02-08 17:47:21
127阅读
红黑树是一种自平衡二叉查找树(binary search tree,BST),红黑树是一种比较复杂的数据结构,红黑树查找、插入、删除元素的时间复杂度为O(log n),n是树中元素的数目.文章的要讲的知识点如下: 一、红黑树的基本介绍 红黑树插入节点 红黑树删除节点 二、红黑树应用实例:Jdk中的TreeMap一、红黑树的基本介绍 二叉查找树(binary search t
转载
2023-07-19 06:53:45
61阅读
java实现红黑树(个人手写)1.红黑树概念平衡二叉查找树 (1)节点非红即黑 (2)根节点为黑色 (3)红色节点不能相邻 (4)任意节点到根节点黑色节点数相同 (5)叶子节点为黑色红黑树展示网站2.实现思路红黑树什么时候发生旋转? 父节点为红色 叔叔节点为null或者为黑色 个人认为分为下面四种情况: (1)0001 需要旋转变成 0002 的 左孩子 (2)0003 需要旋转成 0002 的右
转载
2023-09-03 16:16:44
86阅读
一、红黑树介绍1、R-B Tree概念红黑树(Red Black Tree,简称R-B Tree) 是一种自平衡二叉查找树,它虽然是复杂的,但它的最坏情况运行时间也是非常良好的,并且在实践中是高效的: 它可以在O(log n)时间内做查找,插入和删除,这里的n 是树中元素的数目。红黑树是特殊的二叉查找树,意味着它满足二叉查找树的特征:任意一个节点所包含的键值,大于等于左孩子的键值,小于等于右孩子的
转载
2024-01-16 00:04:47
18阅读
想具体实现以下红黑树算法已经有很长一段时间了,但是一直没有抽出比较完整的时间来系统整理和实现以下红黑树算法,下面一起来看看红黑树的具体实现吧,想想也很简单。1. 首先介绍以下红黑树的性质: 红黑树是一种满足红黑性质的搜索二叉树:红黑树的节点是红色或者黑色根节点是黑色的每个叶子节点是黑色的(这里的叶子节点是指空节点)每个红色节点的孩
转载
2023-10-06 10:44:54
141阅读
在java语言中,TreeMap TreeSet 等都是基于红黑树的原理实现的,主要是用它来存储有序的数据,时间复杂度是O(lgn),效率非常之高,在学习这些数据集合的时候,了解到红黑树,由此对红黑树进行了深入的学习。1、文中提到的给一个节点到兄弟,或者拿一个节点过来,其实都是很多文章中提到了左旋与右旋的目的;2、我这里面画的图真的不如维基百科的图,主要是传递一些我总结的的理解方式红黑树是基于二叉
转载
2023-08-31 14:14:52
89阅读