#include
using namespace std;
class BRTree;
class BRTreeNode{
private:
friend class BRTree;
int key;
bool color;
int size;
BRTreeNode *left;
BRTreeNode *right;
BRTreeNode *parent;
public:
//创...
分类:
编程语言 时间:
2014-11-06 14:51:53
阅读次数:
227
红黑树的介绍红黑树(Red-Black Tree,简称R-B Tree),它一种特殊的二叉查找树。红黑树是特殊的二叉查找树,意味着它满足二叉查找树的特征:任意一个节点所包含的键值,大于等于左孩子的键值,小于等于右孩子的键值。除了具备该特性之外,红黑树还包括许多额外的信息。红黑树的每个节点上都有存储位...
分类:
编程语言 时间:
2014-11-05 19:31:58
阅读次数:
299
R-B Tree简介 R-B Tree,全称是Red-Black Tree,又称为“红黑树”,它一种特殊的二叉查找树。红黑树的每个节点上都有存储位表示节点的颜色,可以是红(Red)或黑(Black)。红黑树的特性:(1)每个节点或者是黑色,或者是红色。(2)根节点是黑色。(3)每个叶子节点(NIL....
分类:
其他好文 时间:
2014-11-05 19:12:18
阅读次数:
315
红黑树是特殊二叉查找树的一种,一颗红黑树有以下5种性质:1、根节点为黑色。2、每个节点不是黑色就是红色。3、每个红色节点的两个儿子一定是黑色。4、所有的叶子节点都是黑色。(注:这里的叶子节点并不是真正意义上的叶子节点,而是一种只有颜色属性但不存放数据的节点,而且其没有儿子节点)5、一个红黑树的中任取...
分类:
其他好文 时间:
2014-11-03 20:36:28
阅读次数:
215
(1) 为何map和set的插入删除效率比用其他序列容器高?因为map和set的内部数据结构是红黑树,它的插入和删除不需做内存的拷贝和移动。(红黑树的插入和删除是log(n)的)。(2)为何每次insert之后,以前保存的iterator不会失效?iterator这里就相当于指向节点的指针,内存没有...
分类:
编程语言 时间:
2014-11-02 17:57:40
阅读次数:
270
1.红黑树为什么要执行旋转操作原因:红黑树在执行Insert和Delete对二叉搜索树进行操作时,结果可能会违反红黑树的性质,需要改变树中某些结点的颜色和指针结构。指针结构的修改:通过左旋、右旋来改变的。特点:旋转操作保持二叉搜索树性质的局部性操作。2.算法代码 1 //左旋 2 static vo...
分类:
编程语言 时间:
2014-11-01 17:34:40
阅读次数:
257
红黑树的概念和条件,以及SGI STL中对RB Tree迭代器和数据结构以及一些重要函数的实现进行简要的说明。...
分类:
其他好文 时间:
2014-10-31 23:42:40
阅读次数:
311
在前面的系列文章中,依次介绍了基于无序列表的顺序查找,基于有序数组的二分查找,平衡查找树,以及红黑树,下图是他们在平均以及最差情况下的时间复杂度:可以看到在时间复杂度上,红黑树在平均情况下插入,查找以及删除上都达到了lgN的时间复杂度。那么有没有查找效率更高的数据结构呢,答案就是本文接下来要介绍了散...
分类:
编程语言 时间:
2014-10-31 23:36:25
阅读次数:
387
介绍还有一种平衡二叉树:红黑树(Red Black Tree),红黑树由Rudolf Bayer于1972年发明,当时被称为平衡二叉B树(symmetric binary B-trees),1978年被Leonidas J. Guibas和Robert Sedgewick改成一个比較摩登的名字:红黑...
分类:
其他好文 时间:
2014-10-31 20:36:56
阅读次数:
199
红黑树的时间复杂度为: O(lgn)下面通过“数学归纳法”对红黑树的时间复杂度进行证明。定理:一棵含有n个节点的红黑树的高度至多为2log(n+1).证明: "一棵含有n个节点的红黑树的高度至多为2log(n+1)" 的逆否命题是 "高度为h的红黑树,它的包含的内节点个数至少为 2h/2-1个"。....
分类:
其他好文 时间:
2014-10-28 08:08:57
阅读次数:
148