
tree
happylife1527
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
二叉查找树详解及C++实现
http://www.cnblogs.com/SadGeminids/archive/2012/01/05/2313184.html注:资料主要参考算法导论二叉树常被用作二叉查找树和二叉堆。二叉查找树是一种很特殊的二叉树,弄懂了二叉查找树,再研究二叉树也就很容易了。二叉排序树(Binary Sort Tree)又称二叉查找树。它或者是一棵空树;或者是具有下列性质的二叉树转载 2012-09-23 20:02:36 · 486 阅读 · 0 评论 -
B树
http://blog.youkuaiyun.com/Houluoxuan_168/article/details/5602988B树、B-树、B+树、B*树都是什么 B树 即二叉搜索树: 1.所有非叶子结点至多拥有两个儿子(Left和Right); 2.所有结点存储一个关键字; 3.非叶子结点的左指针指向小于其关键字的子树,转载 2012-09-06 21:32:26 · 304 阅读 · 0 评论 -
B+树的结构和部分操作的实现
http://blog.youkuaiyun.com/benny5609/article/details/18101131、B+树索引的总体结构①B+树索引是一个多级索引,但是其结构不同于多级顺序索引;②B+树索引采用平衡树结构,即每个叶结点到根的路径长度都相同;③每个非叶结点有到n个子女,n对特定的树是固定的;④B+树的所有结点结构都相同,它最转载 2012-09-06 21:36:05 · 445 阅读 · 0 评论 -
从B树、B+树、B*树谈到R 树
http://blog.youkuaiyun.com/hitwengqi/article/details/7059810最近学习高级数据库技术,涉及到很多的数据结构如B+树,R树,因此想系统的整理一下从B树、B+树、B*树谈到R 树,网上查阅了一些资料进行了整理。下面有关内容部分转自:http://blog.youkuaiyun.com/v_JULY_v/article/details/6530142 其中转载 2012-09-06 21:33:59 · 390 阅读 · 0 评论 -
B+树的实现
http://blog.youkuaiyun.com/xinghongduo/article/details/7059459 B+树是B树的变形,它在B树的节点里删除了关键字的指针域,只保留了链接节点的指针域,在叶节点上,这个链接节点的指针域用来保存关键字信息。B+树中的关键字在树中可能不止出现一次(最多出现两次),但一定在叶节点出现一次。相邻的叶节点用单链表形式连接起来,也就是说,找到了最左的叶节点后转载 2012-09-06 17:31:48 · 950 阅读 · 0 评论 -
教你透彻了解红黑树
http://blog.youkuaiyun.com/v_JULY_v/article/details/6105630教你透彻了解红黑树 作者:July、saturnman 2010年12月29日本文参考:Google、算法导论、STL源码剖析、计算机程序设计艺术。本人声明:个人原创,转载请注明出处。推荐阅读:Left-Leaning Red-Black Trees,转载 2012-09-06 21:34:54 · 321 阅读 · 0 评论 -
trie树--详解
文章作者:yx_th000文章来源:Cherish_yimi (http://www.cnblogs.com/cherish_yimi/) 转载请注明,谢谢合作。关键词:trie trie树 数据结构 [本文新址:http://www.ahathinking.com/archives/14.html ] 前几天学习了并查集和trie树,这里总结一下trie。转载 2012-08-24 15:37:07 · 748 阅读 · 0 评论 -
最小树形图(朱-刘算法)
http://www.cnblogs.com/vongang/category/316765.html 定义:一个有点图,存在从某个点开始的到达所有的的一个最小生成树,则它就是最小树形图。从早晨到现在一直在翻资料,终于理解了一点。朱-刘算法的大概过程如下:1、找到除了root以为其他点的权值最小的入边。用In[i]记录2、如果出现除了root以为存在其他孤立的点,则不存在最小树形图转载 2012-08-24 15:27:39 · 763 阅读 · 0 评论 -
从B树谈到R树之B树的c实现
http://www.cnblogs.com/v-july-v/archive/2011/08/31/2214122.html转载 2012-08-25 17:29:57 · 2407 阅读 · 0 评论 -
从LSM-Tree、COLA-Tree谈到StackOverflow、OSQA(召唤前端)
作者:July,chx/@罗勍出处:结构之法算法之道blog 导读 本文重点谈了4个东西,LSM-Tree及COLA-Tree,及StackOverflow及OSQA,全文分为以下两部分:第一部分从最基本的LSM-Tree的C0C1两组件算法,谈到多组件算法( LSM-Tree最适用于那些索引插入频率远大于查询频率的情况,比如,对于历史记录表和日志转载 2012-08-25 17:27:30 · 636 阅读 · 0 评论 -
B-树学习笔记
http://blog.youkuaiyun.com/acs713/article/details/6880375B-tree(多路搜索树,并不是二叉的)是一种常见的数据结构。使用B-tree结构可以显著减少定位记录时所经历的中间过程,从而加快存取速度。按照翻译,B 通常认为是Balance的简称.这个数据结构一般用于数据库的索引,综合效率较高。 B-tree中,每个结点包含转载 2012-09-06 21:33:09 · 402 阅读 · 0 评论 -
从2-3-4树谈到Red-Black Tree(红黑树)
http://www.cnblogs.com/le23/articles/2329448.html从2-3-4树谈到Red-Black Tree(红黑树) 译者:July。出处:http://blog.youkuaiyun.com/v_JULY_v 。 在上一篇文章--从B树、B+树、B*树谈到R 树里已提到2-3-4树,那么本文,咱们就从2-3-4树开始谈起,然后谈至红黑树。转载 2012-09-06 21:36:47 · 425 阅读 · 0 评论 -
非递归遍历二叉树
http://blog.youkuaiyun.com/zyr1984/article/details/5688608// 中序递归遍历void InOrderTrvDiGui(NODE* pNode){ if(pNode) { InOrderTrvDiGui(pNode->leftNode); cout info; // visit node InO转载 2012-09-13 21:42:53 · 357 阅读 · 0 评论 -
分类算法之决策树(Decision tree)
http://www.cnblogs.com/leoo2sk/archive/2010/09/19/decision-tree.html3.1、摘要 在前面两篇文章中,分别介绍和讨论了朴素贝叶斯分类与贝叶斯网络两种分类算法。这两种算法都以贝叶斯定理为基础,可以对分类及决策问题进行概率推断。在这一篇文章中,将讨论另一种被广泛使用的分类算法——决策树(deci转载 2012-09-09 21:42:52 · 707 阅读 · 0 评论 -
平衡二叉树
http://www.cnblogs.com/huangxincheng/archive/2012/07/22/2603956.html 上一篇我们聊过,二叉查找树不是严格的O(logN),导致了在真实场景中没有用武之地,谁也不愿意有O(N)的情况发生,作为一名码农,肯定会希望能把“范围查找”做到地球人都不能优化的地步。 当有很多数据灌到我的树中时,我肯定会希转载 2012-09-08 19:00:07 · 550 阅读 · 0 评论 -
伸展树
http://www.cnblogs.com/huangxincheng/archive/2012/08/04/2623455.html 我们知道AVL树为了保持严格的平衡,所以在数据插入上会呈现过多的旋转,影响了插入和删除的性能,此时AVL的一个变种伸展树(Splay)就应运而生了,我们知道万事万物都遵循一个“八二原则“,也就是说80%的人只会用到20%的数据,比如说我们转载 2012-09-08 18:53:25 · 410 阅读 · 0 评论 -
Treap树
http://www.cnblogs.com/huangxincheng/archive/2012/07/30/2614484.html 我们知道,二叉查找树相对来说比较容易形成最坏的链表情况,所以前辈们想尽了各种优化策略,包括AVL,红黑,以及今天要讲的Treap树。 Treap树算是一种简单的优化策略,这名字大家也能猜到,树和堆的合体,其实原理转载 2012-09-08 19:03:15 · 531 阅读 · 0 评论 -
红黑树
http://www.cnblogs.com/madonion/articles/2271842.html红黑树维基百科,自由的百科全书 红黑树是一种自平衡二叉查找树,是在计算机科学中用到的一种数据结构,典型的用途是实现关联数组。它是在1972年由鲁道夫·贝尔发明的,他称之为"对称二叉B树",它现代的名字是在 Leo J. Guibas 和 Robert Sedge转载 2012-09-07 23:08:51 · 1598 阅读 · 0 评论 -
二叉查找树
http://www.cnblogs.com/huangxincheng/archive/2012/07/21/2602375.html一直很想写一个关于树结构的专题,再一个就是很多初级点的码农会认为树结构无用论,其实归根到底还是不清楚树的实际用途。 一:场景:1:现状 前几天我的一个大学同学负责的网站出现了严重的性能瓶颈,由于业务是写入和读取转载 2012-09-08 18:53:46 · 608 阅读 · 0 评论 -
红黑树
http://www.cnblogs.com/madonion/articles/2271842.html红黑树维基百科,自由的百科全书 红黑树是一种自平衡二叉查找树,是在计算机科学中用到的一种数据结构,典型的用途是实现关联数组。它是在1972年由鲁道夫·贝尔发明的,他称之为"对称二叉B树",它现代的名字是在 Leo J. Guibas 和 Robert转载 2012-09-07 23:06:22 · 1088 阅读 · 0 评论 -
B树系列文章
http://blog.youkuaiyun.com/whyangwanfu/article/details/1736278B树是最重要的存取路径结构。B树总是平衡的,并且对任意修改操作来说,也容易维持B树的平衡。1.B树的基本思想 B树的每个节点都是一个页面。B树有两种类型的节点:叶子节点和索引节点。叶子节点包含要查找的数据,对聚集索引而言数据是记录,对非聚集索引,这里的数据是指索引转载 2012-09-06 21:38:19 · 473 阅读 · 0 评论 -
伸展树的点点滴滴
http://www.cnblogs.com/hustcat/archive/2010/05/23/1742012.html伸展树(Splay Tree)是AVL树不错的替代,它有以下几个特点:(1)它是二叉查找树的改进,所以具有二叉查找树的有序性。(2)对伸展树的操作的平摊复杂度是O(log2n)。(3)伸展树的空间要求、编程难度非常低。提到伸展树,就不得不提到A转载 2012-09-05 22:19:22 · 302 阅读 · 0 评论 -
AVL树及其实现
http://www.cnblogs.com/hustcat/archive/2008/04/13/1151586.html引言 平衡二叉树由于logN的时间效率,在排序和查找中有重要应用。实现 形态匀称的二叉树称为平衡二叉树 (Balanced binary tree) ,其严格定义是: 一棵空树是平衡二叉树;若 T 是一棵非空二叉树,其左、右子树为 TL 和 TR转载 2012-09-05 22:18:28 · 369 阅读 · 0 评论 -
二元树检索与周游算法设计与实现
[功能模块]//二元树检索与周游算法的实现(VC++6.0调试通过)#include #define n 11 //0号结点不用typedef struct Node{int num; //节点编号struct Node *lch;struct Node *rch;}node,*BinTree; struct Neighborhood转载 2012-09-05 18:46:18 · 766 阅读 · 0 评论 -
二项堆
1. 二项堆数据结构简介2. 存储模型3. 实现代码分析4. 参考资料及代码下载 . 二项堆数据结构简介 一颗二项堆是由一组二项树组成,在给出二项堆的定义之前,首先我们来定义什么是二项树。二项树是一种递归的定义:1. 二项树B[0]仅仅包含一个节点2. B[k]是由两棵B[k-1]二项树组成,其中一颗树是另外一颗树的子树。下面是B0 - B4二项树:转载 2012-08-25 17:14:58 · 620 阅读 · 0 评论 -
平衡二叉树(AVL树)
平衡二叉树(Balanced Binary Tree)是二叉查找树的一个进化体,也是第一个引入平衡概念的二叉树。1962年,G.M. Adelson-Velsky 和 E.M. Landis发明了这棵树,所以它又叫AVL树。平衡二叉树要求对于每一个节点来说,它的左右子树的高度之差不能超过1,如果插入或者删除一个节点使得高度之差大于1,就要进行节点之间的旋转,将二叉树重新维持在一个平衡状态。这个方案转载 2012-09-03 22:15:41 · 405 阅读 · 0 评论 -
中序线索二叉树
/*一棵二叉树若结点有左子树,则其lchild域指示其左孩子,否则令lchild域指示其前驱;若结点有右子树,则其rchild域指示其右孩子,否则令rchild域指示其后继.我们需要一个标志位来表示结点有没有子树,如果没有子树则将其标志设为link,否则将其标志设为thread。由于一个结点有左右孩子,故需设左右标志。以这种结点结构构成的二叉链表作为二叉树的存储结构,叫做线索链表,其中指向结点转载 2012-09-03 22:09:28 · 1079 阅读 · 0 评论 -
二叉树
二叉树 http://www.cnblogs.com/luweiseu/archive/2012/07/14/2591042.html前序遍历(递归及递推算法) 后续遍历(递归及递推算法)中序遍历(递归及递推算法)层序遍历霍夫曼编码深入研究 上面两节内容中,我们讨论了广义树的两种实现方法,及“子节点表”和“最左子节转载 2012-08-29 22:01:29 · 779 阅读 · 0 评论 -
堆
堆 堆的概念 堆上的算法堆的打印CPU优先级抢占模型 堆是一种数组对象,与之前几章所讨论的内容稍有不同的是,堆中的元素项具有特殊的顺序结构。在本书后面将介绍树数据结构,事实上堆属于一种特殊的树,即完全二叉树。完全二叉树中除了最后一层之外树的每一层都填满。之所以将堆数据结构提前介绍,一方面是因为堆也是一种基本的数据结构。另一方面,堆的一个重要功能是能实现优转载 2012-08-29 22:05:47 · 321 阅读 · 0 评论 -
Huffman编码树
Huffman编码是一种可变长编码方式,是由美国数学家David Huffman创立的,是二叉树的一种特殊转化形式。编码的思想是:将使用次数多的代码转换成长度较短的码字(一般是0-1比特型的码字),而使用次数少的可以使用较长的码字,并且保持编码的唯一可解性。Huffman编码已应用于多个重要的数据压缩领域,而数据压缩技术的理论基础是信息论。根据信息论的原理,可以找到最佳数据压缩编码方法,数据压转载 2012-08-29 22:04:46 · 749 阅读 · 0 评论 -
Huffman树结构的实现(下)
下面是Huffman树的测试示例程序: /** * * * Huffman树的测试示例程序, * ExampleHuffmanTree.java */ public class ExampleHuffmanTree { public static void main(String args[]){ //字符串,转载 2012-08-29 22:04:04 · 625 阅读 · 0 评论 -
Huffman树结构的实现(上)
Huffman树结构的实现接下来我们首先讨论Huffman树的实现,然后讨论Huffman树用于Huffman编码的用法和性质等。Huffman树是一种特殊的二叉树,本章前部分讨论了二叉树数据结构,这里我们首先分析Huffman树节点内容的数据结构。从上面的示例中可以发现在建立的Huffman树的叶节点包含信息符和概率值,中间节点没有信息符,只有概率值,且其值为两个子节点的概率值之和。转载 2012-08-29 22:02:38 · 678 阅读 · 0 评论 -
B树、B-树、B+树、B*树
B树 即二叉搜索树: 1.所有非叶子结点至多拥有两个儿子(Left和Right); 2.所有结点存储一个关键字; 3.非叶子结点的左指针指向小于其关键字的子树,右指针指向大于其关键字的子树; 如: B树的搜索,从根结点开始,如果查询的关键字与结点的关键字相等,那么就命中;否则,转载 2012-08-24 15:44:55 · 842 阅读 · 0 评论 -
二叉树的存储结构
二叉树的存储结构 二叉树是非线性结构,即每个数据结点至多只有一个前驱,但可以有多个后继。它可采用顺序存储结构和链式存储结构。1.顺序存储结构 二叉树的顺序存储,就是用一组连续的存储单元存放二叉树中的结点。因此,必须把二叉树的所有结点安排成为一个恰当的序列,结点在这个序列中的相互位置能反映出结点之间的逻辑关系,用编号的方法从树根起,自上层至下层,每层自左至右地给所有结点编号转载 2012-08-20 17:16:29 · 653 阅读 · 0 评论 -
深度优先遍历算法的非递归实现
深度优先遍历算法的非递归实现需要了解深度优先遍历的执行过程,设计一个栈来模拟递归实现中系统设置的工作栈,算法的伪代码描述为: 假设图采用邻接矩阵作为存储结构,具体算法如下: [cpp] view plaincopyprint? 深度优先遍历算法的非递归实现需要了解深度优先遍历的执行过程,设计一个栈来模拟递归实现中系统设置的工作栈,算法的伪代码转载 2012-09-05 17:05:59 · 794 阅读 · 0 评论 -
二叉查找树(BST)
前一篇介绍了树,却未介绍树有什么用。但就算我不说,你也能想得到,看我们Windows的目录结构,其实就是树形的,一个典型的分类应用。当然除了分类,树还有别的作用,我们可以利用树建立一个非常便于查找取值又非常便于插入删除的数据结构,这就是马上要提到的二叉查找树(Binary Search Tree),这种二叉树有个特点:对任意节点而言,左子(当然了,存在的话)的值总是小于本身,而右子(存在的话)转载 2012-09-04 23:11:55 · 313 阅读 · 0 评论 -
二叉树的遍历
6.2.2 二叉树的存储结构二叉树的存储可分为两种:顺序存储结构和链式存储结构。1. 顺序存储结构把一个满二叉树自上而下、从左到右顺序编号,依次存放在数组内,可得到图6.8(a)所示的结果。设满二叉树结点在数组中的索引号为i,那么有如下性质。(1) 如果i = 0,此结点为根结点,无双亲。(2) 如果i > 0,则其双亲结点为(i -1) / 2 。(注意,这里的除转载 2012-09-04 22:55:57 · 886 阅读 · 0 评论 -
树及树的遍历
八、树(Tree)树,顾名思义,长得像一棵树,不过通常我们画成一棵倒过来的树,根在上,叶在下。不说那么多了,图一看就懂:当然了,引入了树之后,就不得不引入树的一些概念,这些概念我照样尽量用图,谁会记那么多文字?树这种结构还可以表示成下面这种方式,可见树用来描述包含关系是很不错的,但这种包含关系不得出现交叉重叠区域,否则就不能用树描述了,看图:面试的时候我们经常被考到的是转载 2012-09-04 22:50:44 · 566 阅读 · 0 评论 -
左偏树
十三、左偏树(Leftist Tree)树这个数据结构内容真的很多,上一节所讲的二叉堆,其实就是一颗二叉树,这次讲的左偏树(又叫“左翼堆”),也是树。二叉堆是个很不错的数据结构,因为它非常便于理解,而且仅仅用了一个数组,不会造成额外空间的浪费,但它有个缺点,那就是很难合并两个二叉堆,对于“合并”,“拆分”这种操作,我觉得最方面的还是依靠指针,改变一下指针的值就可以实现,要是涉及到元素的移动转载 2012-09-04 22:47:11 · 596 阅读 · 0 评论 -
二叉堆
十二、二叉堆(Binary Heap)经历了上一篇实现AVL树的繁琐,这篇就显得非常easy了。首先说说数据结构概念——堆(Heap),其实也没什么大不了,简单地说就是一种有序队列而已,普通的队列是先入先出,而二叉堆是:最小先出。这不是很简单么?如果这个队列是用数组实现的话那用打擂台的方式从头到尾找一遍,把最小的拿出来不就行了?行啊,可是出队的操作是很频繁的,而每次都得打一遍擂台,那就转载 2012-09-04 22:46:11 · 383 阅读 · 0 评论