这里列几个常见问题,应该对你理解和使用hash_map比较有帮助。4.1 hash_map和map的区别在哪里?构造函数。hash_map需要hash函数,等于函数;map只需要比较函数(小于函数).存储结构。hash_map采用hash表存储,map一般采用红黑树(RB Tree)实现。因此其me...
分类:
其他好文 时间:
2015-04-23 12:27:02
阅读次数:
127
问题描述我们知道,Treap可以完成节点的动态插入、删除、查询,其每个操作的时间复杂度是O(log n),因为其实现较红黑树更为简单,因此常常用于某些场合,以替换红黑树的实现。Treap的每个节点维护了key, priority。struct Node {
int key;
int priority;
Node (int k, int p): key(k), priority...
分类:
其他好文 时间:
2015-04-19 18:00:03
阅读次数:
264
树的结构,如果不能保持平衡,那么其搜索性能会大大打折扣,而本节课介绍了几种经典的平衡树,如AVL,2-3-4tree,红黑树等等,然后着重讲了红黑树,接下来就红黑树的基本性质,作一些简短的总结。
首先,红黑树除了具有BST的基本性质外,还额外拥有以下的五大基本性质:
1)每个结点有一个色域,一个结点要么为黑结点,要么为红结点
2)根节点为黑结点
3)每个叶子结点都为黑结点(无键值...
分类:
编程语言 时间:
2015-04-14 21:37:52
阅读次数:
159
红黑树红黑树五个性质:(1)节点是红色或者黑色(2)根节点为黑色(3)每个叶子节点为黑色(4)每个红色节点的两个子节点均为黑色(5)从任意节点到每个叶子节点的所有路径均包含相同数目的黑色节点。红黑树最重要的性质:从根到叶子节点的最长可能路径不多于最短可能路径的两倍长。红黑树大致上是平衡的,因此插入、...
分类:
其他好文 时间:
2015-04-14 21:29:13
阅读次数:
134
这个玩意代码量巨大,模仿着别人写了整整一天...
Java因为没有引用传递,所以构建树要么是全局设定根然后更改,要么函数返回的是根.....
参考:教你透彻理解红黑树 数据结构-红黑树
红黑树确保没有一条路径比其他的路径长出2倍左右,因而是接近平衡的
1. 红黑树性质(限制):
1)每个结点要么是红的要么是黑的。
2)根结点是黑的。
3)每个叶结点(叶结点即指树尾端N...
分类:
编程语言 时间:
2015-04-14 13:04:52
阅读次数:
195
set是集合,虽然也存在键值和实值,不过两者根本就是同一个值,键值的设置完全就是为了满足红黑树的底层结构,set操作与map很像不过也有些不同。1、set迭代器与map的不同:(1)set使用接引用运算符*取值,而map使用first和second取值。(2)set的迭代器都是常量迭代器,不能用来修...
分类:
编程语言 时间:
2015-04-13 22:20:53
阅读次数:
122
SkipList介绍
1. SkipList(跳表),在理论上能够在O(log(n))时间内完成查找、插入、删除操作。SkipList是一种红黑树的替代方案,由于SkipList与红黑树相比无论从理论和实现都简单许多,所以得到了很好的推广。SkipList是基于一种统计学原理实现的,有可能出现最坏情况,即查找和更新操作都是O(n)时间复杂度,但从统计学角度分析这种概率极小。使用SkipL...
分类:
其他好文 时间:
2015-04-13 19:01:10
阅读次数:
350
STL中基本的关联式容器有map和set,它们都是以红黑树作为其底层的结构,具有非常高的查找、删除效率。使用map的注意事项:1、关联式容器的键值是不允许修改的,所以永远不要试图去修改关联式容器的键值2、插入数据时,如果使用的是insert,并且新插入的键值在原映射中已经存在,那么只是单纯的插入不成...
分类:
编程语言 时间:
2015-04-13 16:37:28
阅读次数:
146
平衡二叉树在进行插入操作的时候可能出现不平衡的情况,AVL树即是一种自平衡的二叉树.
它通过旋转不平衡的节点来使二叉树重新保持平衡,并且查找、插入和删除操作在平均和最坏情况下时间复杂度都是O(log n)
AVL树的旋转一共有四种情形,注意所有旋转情况都是围绕着使得二叉树不平衡的第一个节点展开的。
RBT VS AVL:
实际上插入AVL树和红黑树的速度取决于你所插入的数据.如果你的数据分...
分类:
编程语言 时间:
2015-04-13 10:58:24
阅读次数:
291
题目
2-3-4树是B树的特例,是度为2的B树。在B树这篇博客中,我们实现的B树是一个模板,因此要得到2-3-4树,即度为2的B树非常容易,只要如是声明就可以了——Btree bt,其中int是所存元素类型。
在本题中,要实现的是2-3-4树的链接与分裂。参看红黑树的连接操作我们不难得到2-3-4树的链接方法。现在,我们对于2-3-4树的链接也予以推广,即实现任意度数的B树...
分类:
编程语言 时间:
2015-04-11 09:05:41
阅读次数:
146