完整源代码: http://download.csdn.net/detail/hanqing280441589/8450041 红黑节点设计与实现template
class RedBlackNode
{
friend class RedBlackTree;
//所有的成员都是private
private:
RedBlackNode(const Comparable &theE...
分类:
其他好文 时间:
2015-02-17 11:42:50
阅读次数:
129
红黑树是一种自平衡的二叉查找树,是在计算机科学中用到的一种数据结构,典型的用途是实现关联数组(C++ STL 中的map/set)。它是在1972年由Rudolf Bayer发明的,他称之为"对称二叉B树",它现代的名字是在 Leo J. Guibas 和 Robert Sedgewick 于1978年写的一篇论文中获得的。红黑树虽然很复杂,但它的操作有着良好的最坏情况运行时间,并且在实践中是高效...
分类:
其他好文 时间:
2015-02-17 10:22:02
阅读次数:
287
搜索树数据结构支持多种动态集合操作,包括SEARCH、MINIMUM、MAXIMUM、PREDECESSOR、SUCCESSOR、INSRT和DELETE操作等。基本的搜索树就是一棵二叉搜索树。12.1什么是二叉搜索树1. 二叉搜索树的性质:设x是二叉搜索树中的一个结点。如果y是x左子树中的一个结点...
分类:
编程语言 时间:
2015-02-14 22:27:38
阅读次数:
351
Problem Description
You are given N positive integers, denoted as x0, x1 ... xN-1. Then give you some intervals [l, r]. For each interval, you need to find a number x to make as small as possible!
Input
The first line is an integer T (T <= 10), indicat...
分类:
其他好文 时间:
2015-02-07 14:39:36
阅读次数:
205
在排序中,之前利用大小根堆的方式,保持最小值或者最大值在堆顶端
二叉排序树是保持这棵树一直是有序的
二叉排序树的建立,不同于堆操作只需要对非叶子节点进行处理,保持其大于左右孩子,或者是小于左右孩子,而是需要对每一个点都进行处理,因为他是相对而言更加
严谨的操作
查找一个数据:对于大根堆操作,如果当前值小于根节点,那么这个值在左右分支出现都是由可能得,但是对于BST,如果小那么肯定在...
分类:
编程语言 时间:
2015-02-03 19:27:04
阅读次数:
230
1.小根堆
若根节点存在左子女则根节点的值小于左子女的值;若根节点存在右子女则根节点的值小于右子女的值。
2.大根堆
若根节点存在左子女则根节点的值大于左子女的值;若根节点存在右子女则根节点的值大于右子女的值。
3.结论
(1)堆是一棵完全二叉树(如果公有h层,那么1~h-1层均满,在h层连续缺失若干个右叶子)。
(2)小根堆的根节点的值是最小值,大根堆的根节点的值是最大值。
(3)...
分类:
编程语言 时间:
2015-02-02 21:34:38
阅读次数:
208
数据结构期末复习第六章树和二叉树知识点:先序遍历二叉树规则:根-左-右1.访问根结点2.先序遍历左子树3.先序遍历右子树中序遍历二叉树规则:左-根-右1.先中序遍历左子树2.再访问根节点3.最后访问中序遍历右子树后序遍历二叉树规则:左-右-根1.后序遍历左子树2.后序遍历右子树3.访问根结点1. 一...
分类:
其他好文 时间:
2015-01-17 19:29:07
阅读次数:
239
题意大概:
将多叉树转化为括号表达式。
每个节点除了“-”、“|”、和空格以外的其它字符表示。
每个非叶节点的正下方总会有一个“|”字符,然后下方是一排“-”字符,恰好覆盖所有的子节点的上方。
单独的一行“#”为数据结束标记。...
分类:
其他好文 时间:
2015-01-15 20:21:44
阅读次数:
126
红黑树是一种自平衡的二叉查找树,是在计算机科学中用到的一种数据结构,典型的用途是实现关联数组(C++ STL 中的map/set)。它是在1972年由Rudolf Bayer发明的,他称之为"对称二叉B树",它现代的名字是 Leo J. Guibas 和 Robert Sedgewick 于1978年写的一篇论文中获得的。红黑树虽然很复杂,但它的操作有着良好的最坏情况运行时间,并且在实践中是高效的...
分类:
其他好文 时间:
2015-01-11 20:26:14
阅读次数:
273
双旋转单旋转有时会出现一个问题(如下图所示):(如果内侧子孙节点[k1]过深, 则将其单向移动是不会解决问题的) 于是就有了双旋转向右双旋转: 1.首先以k1为轴, k1与k2向左旋转; 2.然后以k3为轴, k3与旋转之后的k1向右旋转;//实现
//向右双旋转
template
void RedBlackTree::doubleRotateWithLeftChild(Node *...
分类:
其他好文 时间:
2015-01-11 20:24:04
阅读次数:
260