红黑树遵守的规则:一头(根)一脚(叶子节点)黑(黑色),黑同(从任意节点开始至根结点的黑色节点的个数相等)红不连(红色节点不能相连)以下是红黑树的插入和旋转函数的简易实现:#include
#include
#include using namespace std;typedef int Type;
typedef enum{RED=0...
分类:
编程语言 时间:
2016-05-12 13:24:14
阅读次数:
249
引子 部门在各个团队推广软件通用技能矩阵工具,希望通过度量找到能力薄弱点,引导团队进行改进。从我们团队的数据上看,团队在数据结构和算法上的短板明显,需要加强,这也是写这篇文章的背后的初衷。 数据结构和算法是程序员的基本技能,也是大牛程序员的试金石。Linus大神就曾说过:"bad programer ...
分类:
其他好文 时间:
2016-04-20 13:27:05
阅读次数:
188
什么样的结构决定其什么样的性质,因为set/map/multiset/multimap都是基于RB-tree之上,所以有自动排序功能, 而hash_set/hash_map/hash_multiset/hash_multimap都是基于hashtable之上,所以不含有自动排序功能,至于加个前缀mu ...
分类:
其他好文 时间:
2016-04-20 13:05:08
阅读次数:
274
一,set和hash_set简介 在STL中,set是以红黑树(RB-Tree)作为底层数据结构的,hash_set是以哈希表(Hash table)作为底层数据结构的。set可以在时间复杂度为O(logN)的情况下插入,删除和查找数据。hash_set操作的时间度则比较复杂,取决于哈希函数和哈希表
分类:
其他好文 时间:
2016-02-02 14:39:02
阅读次数:
186
Inline void __rb_tree_rebalance(__rb_tree_node_base* x, __rb_tree_node_base*& root) //当前节点,根{ x->color = __rb_tree_red; ...
分类:
其他好文 时间:
2016-01-17 10:57:30
阅读次数:
110
SGI STL map 实现概述 根据上一节的红黑树分析, 结合 sgi stl map 的实现, 看看红黑树的源码是如何实现的. 以下主要以代码的注释为主. sgi stl map 底层实现是 _Rb_tree类, 为了方便管理, _Rb_tree 内置了 _M_header, 用于记录红黑树中的...
分类:
其他好文 时间:
2016-01-16 19:01:49
阅读次数:
351
#ifndef RB_TREE_H#define RB_TREE_Hconst int BLACK = -1;const int RED = 1;static int number1 = 0; //////用于统计插入的各种情况次数的static int number2 = 0;static in....
分类:
编程语言 时间:
2015-11-09 12:45:59
阅读次数:
326
STL的关联容器有set, map, multiset, multimap.用于实现它们的底层容器有划入标准的rb_tree和待加入标准的hashtable.
底层容器rb_tree为上层容器提供了一种有序的服务.关键步骤时间复杂度为O(lgN);
底层容器hashtable为上层容器提供的是无序的服务,但其关键步骤的时间复杂度为O(1).
那么上层容器是怎么映射到底层容器中...
分类:
其他好文 时间:
2015-07-06 01:33:04
阅读次数:
146
1 通用的search方法
STL在实现对特定key值的查找时,并没有采用通用的方法:
BRTreeNode * rb_tree_search(RBTreeNode * x, int key){
while(x ! = NULL && x->key != key){
if( x->key > key){
x = x ->left;
}else{
x = x->right...
分类:
其他好文 时间:
2015-07-05 21:16:46
阅读次数:
149
原文:http://blog.csdn.net/morewindows/article/details/7029587STL系列之六 set与hash_setset和hash_set是STL中比较重要的容器,有必要对其进行深入了解。在STL中,set是以红黑树(RB-tree)作为底层数据结构的,h...
分类:
其他好文 时间:
2015-04-24 20:58:40
阅读次数:
121