红黑树详解

简介: 红黑树详解

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,通过变色和左旋右旋来保持他的特征。

相关文章
|
2月前
|
关系型数据库 容器
红黑树的简单介绍
红黑树的简单介绍
20 0
|
4月前
|
存储 应用服务中间件 调度
随处可见的红黑树详解
随处可见的红黑树详解
44 0
|
4月前
|
存储 调度
红黑树总结
红黑树总结
36 0
|
1天前
|
Linux C++
红黑树的实现
红黑树的实现
7 2
|
4月前
|
调度
随处可见的红黑树
随处可见的红黑树
|
5月前
|
存储 Linux 调度
C++【红黑树】
C++【红黑树】
37 0
|
6月前
|
算法 Java Linux
C++红黑树
C++红黑树
|
10月前
|
JavaScript
红黑树是怎么来的
本文从二叉搜索树倾斜的原因(自上而下生长)出发,推出维持树形数据结构平衡性的关键:自下而上裂变式生长,进而引出裂变式生长的理论模型:2-3 树。由于 2-3 树实现上的复杂性,引出其实现上的替代品:红黑树。最后,我们讨论如何通过左旋、右旋以及颜色翻转这“三板斧”来维护红黑树插入和删除元素后的动态平衡。
63 2
红黑树是怎么来的
|
11月前
红黑树
红黑树
45 0