在编程中,我们往往使用已有的数据结构无法解决问题,这是不必要急着创建新的数据结构,而是在已有数据结构的基础上添加新的字段。本节在上一次笔记红黑树这一基础数据结构上进行扩展,得出两个重要的应用—动态顺序统计和区间树。
动态顺序统计
在算法系列笔记2中我们在线性时间内完成了静态表的顺序统计,而这里我们在红黑树上进行扩展,在O(lgn)时间内完成该操作,主要包括返回第i
排名的元素o...
分类:
编程语言 时间:
2015-02-03 23:00:43
阅读次数:
342
链接:click here
题意:
什么是红黑树呢?顾名思义,跟枣树类似,红黑树是一种叶子是黑色果子是红色的树。。。
当然,这个是我说的。。。
《算法导论》上可不是这么说的:
如果一个二叉查找树满足下面的红黑性质,那么则为一个红黑树。
1)每个节点或是红的,或者是黑的。
2)每个叶子节点(NIL)是黑色的
3)如果一个节点是红色的,那么他的两个儿子都是黑的。
4)根...
分类:
其他好文 时间:
2015-02-02 14:13:16
阅读次数:
193
红黑树的五大性质(性质四与性质五特别重要) 1. 节点必须是红色或者是黑色 2. 根节点是黑色的 3. 所有的叶子节点是黑色的。 4. 每个红色节点的两个子节点是黑色的,也就是不能存在父子两个节点全是红色。 5. 从任意每个节点到其每个叶子节点的所有简单路径上黑色节点的数量是相同的。 以下情况两点说...
分类:
其他好文 时间:
2015-02-02 00:34:08
阅读次数:
193
一:起因
(1):set的含义是集合,它是一个有序的容器,里面的元素都是排序好的,支持插入,删除,查找等操作,就 像一个集合一样。所有的操作的都是严格在logn时间之内完成,效率非常高,具体实现采用了红黑树的平衡二叉树的数据结构。
set和multiset的区别是:set插入的元素不能相同,但是multiset可以相同。
创建 multiset base; 删除:如果删除元素a,那么在定义的...
分类:
其他好文 时间:
2015-01-30 15:58:38
阅读次数:
183
//
// 五条属性:
// 1.每个节点或是红色的,或是黑色的。
// 2.根节点是黑色的。
// 3.每个叶结点(NIL)是黑色的。
// 4.如果一个结点是红色的,则它的两个子结点都是黑色的。
// 5.对每个结点,从该结点到其所有后代叶结点的简单路径上
// 均包含相同数目的黑色结点。
//
//http://blog.csdn.net/v_JULY_v/article/details/...
分类:
其他好文 时间:
2015-01-28 16:06:49
阅读次数:
176
二叉排序树->查找性能取决于树高度,失衡->AVL/红黑树->外排,减少IO->降低树高->多度->一次载入多个元素->节点存储多个元素->多路查找树B-树->基于范围查找->B+树平衡查找树(AVL树)在出现失衡,立即进行调整。可以维持最好的性能O(logn)红黑树是一种平衡二叉查找树,对节点颜色...
分类:
其他好文 时间:
2015-01-28 15:55:44
阅读次数:
282
红黑树的插入和删除规则:
红黑树的五个性质
1、 每个节点要么是红的,要么是黑的
2、 根节点时黑色的
3、 每个叶节点(叶节点既指树尾端NIL指针或NULL节点)是黑色的
4、 如果一个节点时红的,那么它的两个儿子都是黑色的
5、 对每个节点,其到叶节点树尾端NIL指针的每一条路径都包含相同数目的黑节点
这里所说的“叶节点”或者“NULL节点”,它不包...
分类:
其他好文 时间:
2015-01-28 14:44:05
阅读次数:
119
1,TreeMap:
-1,基于红黑树的实现。TreeMap根据创建时的顺序或者根据提供的Comparator进行排序,具体决定于使用的构造方法。提供Conparator方法后,判断对象相等也会基于此方法。
-2,containsKey,get,put和remove方法消耗log(n)的时间复杂度。
/** * * @(#) Main.java * @Package ...
分类:
其他好文 时间:
2015-01-24 11:42:45
阅读次数:
306
map映照容器的元素数据是一个键值和一个映照数据组成的,键值与映照数据之间具有一一映照的关系。map映照容器的数据结构是采用红黑树来实现的,插入键值的元素不允许重复,比较函数只对元素的键值进行比较,元素的各项数据可通过键值检索出来。map类支持关联式容器。一个值映射到唯一一个关键字。本质上这种映射就...
分类:
编程语言 时间:
2015-01-20 22:06:41
阅读次数:
191