红黑树一直是数据结构中的难点,大部分关于红黑树的学习资料(包括《算法导论》)对于这部分的讲解都是上来就下定义,告诉我们红黑树这个性质那个性质,插入删除要注意1234点,但是基本没有讲为什么这样定义红色和黑色,让人理解起来十分费力。直到我看了下图这本树中关于红黑树部分的讲解,一时间豁然开朗,上网查了下 ...
分类:
其他好文 时间:
2016-06-04 17:54:22
阅读次数:
246
在java jdk8中对HashMap的源码进行了优化,在jdk7中,HashMap处理“碰撞”的时候,都是采用链表来存储,当碰撞的结点很多时,查询时间是O(n)。 在jdk8中,HashMap处理“碰撞”增加了红黑树这种数据结构,当碰撞结点较少时,采用链表存储,当较大时,采用红黑树(特点是查询时间 ...
分类:
其他好文 时间:
2016-06-04 14:47:32
阅读次数:
191
map是stl提供的一个关联容器,提供一对一的数据处理能力。第一个值为关键字,在map中只能出现一次,第二个值为关键字的值。map内部自建一颗红黑树,具有自动排序的功能。不管你以什么顺序插入值,map会按照关键字key的大小进行自动排序。 1.map的构造 map<int,string> mapSt ...
分类:
其他好文 时间:
2016-06-03 01:05:29
阅读次数:
189
红黑树是平衡树的一种,保证最坏情况下操作时间复杂度为O(lgo(n))。红黑树的应用比较广泛,比如作为C++中STL的set和map的底层数据结构,Java集合中TreeSet和TreeMap的底层数据结构等。学习红黑树,可以把二叉查找树作为参考,这样有助于加深理解。红黑树的操作主要包括节点旋转、插 ...
分类:
其他好文 时间:
2016-05-31 22:10:50
阅读次数:
236
map映照容器的元素数据是一个键值和一个映照数据组成的,键值与映照数据之间具有一一映照的关系。 map映照容器的数据结构是采用红黑树来实现的,插入键值的元素不允许重复,比较函数只对元素的键值进行比较,元素的各项数据可通过键值检索出来。 使用map容器需要头文件包含语句“#include<map>”。 ...
分类:
其他好文 时间:
2016-05-30 21:40:05
阅读次数:
144
1.红黑树简介
二叉搜索树能够提供对数的元素插入和访问。二叉搜索树的规则是:任何节点的键值一定大于其左子树的每一个节点值,并小于右子树的每一个节点值。
常见的二叉搜索树有AVL-tree、RB-tree(红黑树)。红黑树具有极佳的增、删、查性能,故我们选择红黑树作为关联式容器(associative containers)的底层结构。
红黑树是每个节点都带有颜色属性的二叉查找树,颜色或红色或...
分类:
其他好文 时间:
2016-05-30 15:47:08
阅读次数:
187
红黑树定义红黑树,顾名思义,就是树的节点只有红色和黑色两种状态,通过这两种状态的标识和规定颜色的使用,来使树达到相对平衡。为什么说相对平衡?因为在红黑树中,所有的条件限制只能保证,所有路径中最长的路径不能使最短路径的2倍。只能保证相对平衡。有人讨论:红黑树是不是一棵平衡二叉树?因为红黑树不满足严格的平衡二叉树的定义,从严格意义上来讲,红黑树并不是平衡二叉树;但是,红黑树在建立的时候,也是有平衡调整的...
分类:
其他好文 时间:
2016-05-30 15:44:32
阅读次数:
188
set的特性是所有元素都会根据键值自动排序,set的元素不像map那样同时拥有实值(value)和键值(key),set元素的键值就是实值,实值就是键值。Set不允许两个元素拥有相同的键值。不能通过迭代器修改set元素的值。
multiset和set的唯一区别在于multiset允许键值重复。
我们采用红黑树作为set和multiset的底层数据结构,set...
分类:
其他好文 时间:
2016-05-30 15:06:56
阅读次数:
256
HashSet和TreeSet是Set的两个典型实现,到底如何选择HashSet和TreeSet呢?HashSet的性能总是比TreeSet好(特别是最常用的添加、查询元素等操作),因为TreeSet小额外的红黑树算法来维护集合元素的次数。只有当需要一个保持排序的Set时,才应该用TreeSet,否 ...
分类:
其他好文 时间:
2016-05-29 16:44:02
阅读次数:
186
近期学习了STL中set的使用,在此写一点点总结和自己的一些体悟。 set集合容器实现了红黑树(Red-Black Tree)的平衡二叉检索树的的数据结构,在插入元素时,它会自动调整二叉树的排列,把该元素放到适当的位置,以确保每个子树根节点的键值大于左子树所有节点的键值,而小于右子树所有节点的键值; ...
分类:
其他好文 时间:
2016-05-27 23:23:16
阅读次数:
223