红黑树详解

简介: 红黑树详解

1、每个节点或者是红色或者黑色。


2、根节点是黑色。


3、红色节点的两个子节点都是黑色。(从每个叶子到根的路径不会出现两个连续的红色)


4、对于每个节点,从该节点到其叶子节点构成的所有路径上黑节点个数相同。


5、所有的叶子节点都是null节点,并且是黑色。


这里先介绍一下O1),On),Ologn),Onlogn),On^2)。


O1)常数阶:最低的时空复杂度,也就是耗费的时间或者空间与输入的数据大小无关。哈希算法就是典型的O1)复杂度。

Ologn)对数阶:当数据增大n倍的时候,耗时则值增大了8倍,比线性的耗能更低,二分查找法就是利用这个原理。

On)线性阶:代表数据量增大几倍,也就耗时增大几倍。

Onlogn)对数阶乘以n,这个需要乘以n,所以比线性阶的耗时大。

On^2)平方阶:代表着数据增大n倍时,也就消耗n的平方倍。

平方阶上面还有立方阶,指数阶,同理耗时越来越长。

排序二叉树:排序二叉树是有序的,特殊结构的二叉树,可以对所有节点进行检索,但是缺点是当插入的数据正好都是有序的时候,他会退化成链表。这时候时间复杂度就会增加。

平衡树二叉树(AVL)是什么呢,最重要的特性就是最坏的情况下能保证O(logN)的时间复杂度查找,不具备的话可能退化成单链表,时间复杂度会到ON)。


1、每个节点最多只有两个子节点。(二叉)


2、有序:每个节点的值比他左边树所有节点都大。(必须是排序的)


3、每个节点左边树的高度与右边高度不会超过1


为什么会出现红黑树呢,为了防止在极端情况下,二叉树退化成链表导致检索效率大大降低的问题。他肯定是排序二叉树,然后在其基础上,加上了redblack,通过变色和左旋右旋来保持他的特征。

相关文章
|
缓存 NoSQL Java
SpringBoot实现缓存预热的几种常用方案
SpringBoot实现缓存预热的几种常用方案
|
存储 应用服务中间件 调度
随处可见的红黑树详解
随处可见的红黑树详解
177 0
|
JavaScript
组件化开发
组件化开发
|
弹性计算 Oracle 固态存储
阿里云ESSD云盘性能级别PL0、PL1、PL2和PL3怎么选?
阿里云服务器ESSD云盘性能级别PL0、PL1、PL2和PL3怎么选择?不同性能级别对应的单盘IOPS性能上限、IO和吞吐量都不同,ESSD云盘容量越大可选择的PL级别越高,性能级别PL越高价格也越贵,阿里云百科来详细说下阿里云ESSD云盘不同性能级别区别以及选择方法:
4632 0
阿里云ESSD云盘性能级别PL0、PL1、PL2和PL3怎么选?
|
存储 NoSQL Redis
【Redis 探秘】SDS 简单动态字符串:揭秘 Redis 高效字符串处理的秘密武器!
【8月更文挑战第24天】Redis采用的简单动态字符串(SDS)是一种专为优化内存存储和字符串操作而设计的数据结构。相较于C语言的标准字符串,SDS改进了字符串长度计算、内存重分配及字符串比较等问题。其特性包括预分配冗余空间减少未来的内存重分配、显式存储长度以加快获取速度等。这些改进使Redis能更高效地管理字符串数据。例如,在Redis中,SDS被广泛应用于键值对的存储,显著提升了字符串操作的性能。了解SDS不仅对于深入理解Redis的工作原理至关重要,也是开发者技能树中的重要一环。
154 0
|
Android开发
Android自定义之QQ身边的人
Android自定义之QQ身边的人
103 0
|
XML 自然语言处理 IDE
一杆到底:DSL 领域特定语言
一、DSL了解1、DSL介绍DSL(Domain Specific Language)是针对某一领域,具有受限表达性的一种计算机程序设计语言。 常用于聚焦指定的领域或问题,这就要求 DSL 具备强大的表现力,同时在使用起来要简单。说到DSL,大家也会自然的想到通用语言(如Java、C等)。为什么没有一种语言同时 兼具『简洁』和『业务表达』能力呢?从信息论本质上来讨论这个问题,每个语言的程序都可以抽
17022 0
一杆到底:DSL 领域特定语言
|
机器学习/深度学习 存储 搜索推荐
干货 | 全方位深度解读 Elasticsearch 分页查询
1、关于 Elasticsearch 分页查询,这几个问题经常被问到 问题1:想请问下,一次性获取索引上的某个字段的所有值(100 万左右),除了把 max_result_window 调大 ,还有没有啥方法? 问题2:关于 es 的分页,每次拿 20 条展示在前台,然后点击下一页,在查询后面的20条数据,应该要怎么写? 问题3:From+size、Scroll、search_after 的本质区别和应用场景分别是什么?
干货 | 全方位深度解读 Elasticsearch 分页查询
|
网络协议 大数据 5G
大连接时代到来的十大标志之一:用户、战略与网络基础建设
根据中国互络信息中心近日发布的《中国互联网络发展状况统计报告》显示,截至2016年12月,我国网民规模达7.31亿,2016年共计新增网民4299万人,互联网普及率达到53.2%。在这组数据中,手机网民占比达6.95亿,因为老人与儿童可能不会操作PC,但用手机和平板上网则相对容易。
238 0
大连接时代到来的十大标志之一:用户、战略与网络基础建设