RB-tree(红黑树)
1.1
简介
RB-tree属于二叉搜索树,即节点的键值一定大于其左孩子节点的键值,小于其右孩子节点的键值。RB-tree还有以下四个特征:
1、 每个节点非黑即红。
2、 根节点为黑色。
3、 如果节点为红,其子节点必须为黑。
4、 任一节点至NULL(即尾端)的任何路径,所含黑节点...
分类:
其他好文 时间:
2014-09-07 17:19:25
阅读次数:
280
map是关联式的,vector、list、deque是序列式的。
map:底层机制RB-tree(红黑树),元素自动排序,键值对。
vector:操作方式与array相似,动态空间增长。是连续性空间,支持随机访问。
优点:
Ø 内存动态增长,不需要指定内存大小。
Ø 支持随机访问,即支持[]和vector.at()。
缺点:
Ø 在内部进行插入...
分类:
编程语言 时间:
2014-08-27 18:46:38
阅读次数:
194
STL中,关联式容器的内部结构是一颗平衡二叉树,以便获得良好的搜索效率。红黑树是平衡二叉树的一种,它不像AVL树那样要求绝对平衡,降低了对旋转的要求,但是其性能并没有下降很多,它的搜索、插入、删除都能以O(nlogn)时间完成。平衡可以在一次或者两次旋转解决,是“性价比”很高的平衡二叉树。...
分类:
其他好文 时间:
2014-08-15 22:36:59
阅读次数:
445
在stl中容器分为两大类,序列式容器和关联式容器。序列式容器:array、vector、heap、priority-queue、list、slist、deque、(stack、queue)最后两个是配接器关联式容器:RB-tree、set、map、multiset、multimap、hashtabl...
分类:
其他好文 时间:
2014-08-03 17:50:15
阅读次数:
232
set相关算法
------------------------------------------------------------------------------------
描述:
set_union , set_difference , set_intersection , set_symmetric_difference 算法接受的 set ,
必须是有序区间,适用于以 RB-tree 为底层的 set/multiset , 不适用于以 hash 为底层的 hash_set/hash_mul...
分类:
其他好文 时间:
2014-07-22 22:34:33
阅读次数:
214
set
------------------------------------------------------------------------
所有元素都会根据元素的键值自动被排序。
不可以通过 set 的迭代器改变 set 的元素值。因为 set 元素值就是其键值,关系到 set 元素的排列规则。
set::iterator 被定义为底层 RB-tree 的 const_iterator,杜绝写入操作
标准的 STL set 以 RB-tree 为底层机制,就像 stack 以 dequ...
分类:
其他好文 时间:
2014-07-22 22:34:33
阅读次数:
231
本文为senlie原创,转载请保留此地址:http://blog.csdn.net/zhengsenlie1.PyDictObject对象 --> C++ STL中的map是基于RB-tree的,搜索时间复杂度是O(logN)PyDictObject採用了hash表,时间复杂度是O(1)typede...
分类:
编程语言 时间:
2014-06-26 16:35:13
阅读次数:
175
1.PyDictObject对象 --> C++ STL中的map是基于RB-tree的,搜索时间复杂度是O(logN)
PyDictObject采用了hash表,时间复杂度是O(1)
typedef struct{
Py_ssize_t me_hash; //me_key的hash值,避免每次查询都要重新计算一遍hash值
PyObject *me_key;
PyObject *me_value;
}PyDictEntry;
将(key,value)对称为entry,它可以在3种状态...
分类:
编程语言 时间:
2014-06-16 21:22:45
阅读次数:
272
set、map、multiset、multimap四种关联式容器的内部都是由红黑树实现的。在STL中红黑树是一个不给外界使用的独立容器。既然是容器,那么就会分配内存空间(节点),内部也会存在迭代器。关于红黑树的一些性质,可以参考“数据结构”中的笔记,这里只记录STL中的红黑树是如何实现的。
和slist一样,红黑树的节点和迭代器均采用了双层结构:
节点:__rb_tree_no...
分类:
其他好文 时间:
2014-05-07 15:55:28
阅读次数:
487