之前用multiset并不知道它的实现方式…今天来学红黑树QAQ
【明天要考C,我怎么不去看看基本语言…】
红黑树(Red Black Tree) 是一种自平衡二叉查找树,是在计算机科学中用到的一种数据结构,典型的用途是实现关联数组。
红黑树是在1972年由Rudolf Bayer发明的,当时被称为平衡二叉B树(symmetric binary B-trees)。后来,在1978年被 Leo J. Guibas 和 Robert Sedgewick 修改为如今的“红黑树”。
红黑树是一种特化的AVL树(平衡二叉树),都是在进行插入和删除操作时通过特定操作保持二叉查找树的平衡,从而获得较高的查找性能。
它虽然是复杂的,但它的最坏情况运行时间也是非常良好的,并且在实践中是高效的: 它可以在O(log n)时间内做查找,插入和删除,这里的n 是树中元素的数目。
来源百度百科
有一说一,当我打开mooc,点开红黑树的视频,第一眼看到这个红黑树之歌…我再也不觉得这个课严肃了23333
基本性质:
理想效率
查找,插入,删除都是O(logn) [树高接近logn情况下]
如果输入序列单调增或单调减,会退化成线性(O(n))
平衡的扩充二叉搜索树
着色:
每个点为红色或黑色
根,扩充的外部叶节点为黑色
一个红色节点的子节点一定是黑色
不允许两个连续的 红色节点
任何节点到其子孙外部节点的简单路径上都含相同数目的黑色节点
红黑树的阶
又称黑色高度
从该节点到外部节点的黑色节点数量(不包括该节点本身,包括叶节点)
外部节点的阶是0
根的阶成为该树的阶
树高
k
k
k阶红黑树最矮为
k
+
1
k+1
k+1,最高为
2
∗
k
+
1
2*k+1
2∗k+1
n
n
n个节点,树高最高为
2
l
o
g
2
(
n
+
1
)
−
1
2log_2(n+1)-1
2log2(n+1)−1
节点数
阶为k,内部节点最少为一棵满二叉树,节点数为
2
k
−
1
2^k-1
2k−1
(bb一句,mooc五分钟,我要看半小时呜呜呜
就到这里吧,维护考完试再学