转载自http://www.cnblogs.com/yangecnu/p/3632027.html浅谈算法和数据结构: 十 平衡查找树之B树前面讲解了平衡查找树中的2-3树以及其实现红黑树。2-3树种,一个节点最多有2个key,而红黑树则使用染色的方式来标识这两个key。维基百科对B树的定义为“在计...
分类:
编程语言 时间:
2015-02-10 10:29:24
阅读次数:
173
转载自http://www.cnblogs.com/yangecnu/p/3627386.html浅谈算法和数据结构: 九 平衡查找树之红黑树前面一篇文章介绍了2-3查找树,可以看到,2-3查找树能保证在插入元素之后能保持树的平衡状态,最坏情况下即所有的子节点都是2-node,树的高度为lgN,从而...
分类:
编程语言 时间:
2015-02-09 19:51:15
阅读次数:
182
1、逻辑结构分为集合结构,线性结构(1对1),树形结构(1对多),图形结构(多对多)2、物理结构分为顺序存储结构(基于连续内存),链式存储结构(基于节点)。注:B树也是树形结构,是二叉搜索树的扩展。二叉搜索树节点本身只有一个元素,有两个孩子。B树是多路查找树,节点本身有多个元素,交叉有多个指针指向....
分类:
其他好文 时间:
2015-02-07 11:28:39
阅读次数:
99
随机构建的二叉查找树的高度期望值为O(lgn),并不代表所有的二叉查找树的高度都为O(lgn)。但是对于有些二叉查找树的变形来说,动态集合各基本操作的性能却总是很好的,如红黑树、B树、平衡二叉树(AVL树)、跳跃表(确切的说不是树,或多或少有树的结构)、treaps(树堆)等。这里我们讲解红黑树。
平衡的意思就是完成动态数据集的操作(minimum、maximum、search、p...
分类:
编程语言 时间:
2015-02-03 23:03:09
阅读次数:
293
(1)二叉查找树的性质:设x为二叉查找树的一个结点。如果y是x左子树中的一个结点,则key[y]≤key[x]。如果y是x的右子树中的一个结点。则key[x]≤key[y].
(2)二叉查找树的结点中除了key域和卫星数据外,还包括left、right和p分别指向结点的左儿子、右儿子和父节点。
(3)构造一棵二叉查找树最好情况下时间复杂度为O(nlgn),最坏情况为O(n^2)。随机化构造一棵...
分类:
编程语言 时间:
2015-02-02 23:05:44
阅读次数:
322
概要本章介绍AVL树。和前面介绍"二叉查找树"的流程一样,本章先对AVL树的理论知识进行简单介绍,然后给出C语言的实现。本篇实现的二叉查找树是C语言版的,后面章节再分别给出C++和Java版本的实现。 建议:若您对"二叉查找树"不熟悉,建议先学完"二叉查找树"再来学习AVL树。目录1.AVL树的介绍...
分类:
编程语言 时间:
2015-02-02 22:58:47
阅读次数:
435
概要本章介绍伸展树。它和"二叉查找树"和"AVL树"一样,都是特殊的二叉树。在了解了"二叉查找树"和"AVL树"之后,学习伸展树是一件相当容易的事情。和以往一样,本文会先对伸展树的理论知识进行简单介绍,然后给出C语言的实现。后序再分别给出C++和Java版本的实现;这3种实现方式的原理都一样,选择其...
分类:
编程语言 时间:
2015-02-02 22:55:27
阅读次数:
385
链接:click here
题意:
什么是红黑树呢?顾名思义,跟枣树类似,红黑树是一种叶子是黑色果子是红色的树。。。
当然,这个是我说的。。。
《算法导论》上可不是这么说的:
如果一个二叉查找树满足下面的红黑性质,那么则为一个红黑树。
1)每个节点或是红的,或者是黑的。
2)每个叶子节点(NIL)是黑色的
3)如果一个节点是红色的,那么他的两个儿子都是黑的。
4)根...
分类:
其他好文 时间:
2015-02-02 14:13:16
阅读次数:
193
B-树和B+树是一种平衡的多路查找树,它在文件系统中很有用。一颗m阶的b-树,或为空树,或满足下列特性的m叉树。1)树中每个节点至多有m棵子树2)若根结点不是叶子结点,则至少有两棵子树。3)除根之外的所有非终端结点至少有[m/2]棵子树;4) 所有的非终端结点中包含下列信息(n,A0,K1,A1,K...
分类:
其他好文 时间:
2015-02-01 19:09:15
阅读次数:
142