一、树
树的定义:树是n(n>=0)个结点的有限集。
对于任意一棵非空树:(1)有且仅有一个特定的结点称为根结点;(2)当n>1时,其余结点可分为m(m>0)个互不相交的有限集T1,T2,T3···,Tm,其中每一个集合本身又是一棵树,并且称为根的子树。
结点:树的结点包含一个数据元素及若干指向其子树的分支。
度(degree):结点拥有的子树数称为结点的度。
叶子(leaf):度为...
分类:
其他好文 时间:
2015-08-19 17:07:31
阅读次数:
173
给定一个无向图,如果它任意两个顶点都联通并且是一棵树,那么我们就称之为生成树(Spanning Tree)。如果是带权值的无向图,那么权值之和最小的生成树,我们就称之为最小生成树(MST, Minimum Spanning Tree)。
我们由最小生成树的定义,可以延伸出一个修建道路的问题:把无向图的每个顶点看作村庄,计划修建道路使得可以在所有村庄之间通行。把每个村庄之间修建...
分类:
编程语言 时间:
2015-08-18 09:08:42
阅读次数:
159
数据结构可以归类两大类型:线性结构与非线性结构,本文的内容关于非线性结构:树的基本定义及相关算法。关于树的一些基本概念定义可参考:维基百科
树的ADT模型:
根据树的定义,每个节点的后代均构成一棵树树,称为子树。因此从数据类型来讲,树、子树、树节点是等同地位,可将其看作为一个节点,用通类:Tree表示。如下图所示:
图:Tree ADT模型示意图
可采用“父亲-儿子-兄弟”模型来表示树的...
分类:
编程语言 时间:
2015-08-16 21:29:18
阅读次数:
194
6. 蛤蟆的数据结构进阶六之二叉树排序树
本篇名言:“有些人因为贪婪,想得更多的东西,却把现在所有的也失掉了。 --
伊索”
关于理论知识已经在上篇中进行描述,这篇我们主要来看下如何是实现二叉排序树。
欢迎转载,转载请标明出处:
1. 二叉排序树的定义
二叉排序树(BinarySort Tree)又称二叉查找(搜索)树(Binary Search Tree)。其定义为:...
分类:
编程语言 时间:
2015-08-05 22:15:26
阅读次数:
213
平衡二叉树给定一个二叉树,确定它是高度平衡的。对于这个问题,一棵高度平衡的二叉树的定义是:一棵二叉树中每个节点的两个子树的深度相差不会超过1。 先求左子树和右子树的最大深度,然后判断是否相差大于1,如果是,则不可能是,如果相差小于,继续递归调用判断左子树和右子树是否都是平衡二叉树。代码实现bool isBalanced(TreeNode *root) {
// write your...
分类:
其他好文 时间:
2015-08-05 20:27:44
阅读次数:
129
一、二叉树的定义 树的每个结点至多只有二棵子树(不存在度大于2的结点),树的子树有左右之分,次序不能颠倒。二、二叉树的性质(1) 在非空二叉树中,第i层的结点总数不超过, i>=1;(2) 深度为h的二叉树最多有个结点(h>=1),最少有h个结点;(3) 对于任意一棵二叉树,如果其叶结点数为N0,....
分类:
其他好文 时间:
2015-08-02 15:02:42
阅读次数:
112
一、为什么使用二叉树? 为什么要用到树?因为它通常结合了另外两种数据结构的优点:一种是有序数组,另一种是链表。在树中查找数据项的速度和在有序数组中查找一样快,并且插入数据项和删除数据项的速度也和链表一样。二、二叉树的定义 如果数种每个节点最多只能有两个子节点,这样的树称为“二叉树”。二叉树的每个.....
分类:
其他好文 时间:
2015-07-30 23:13:20
阅读次数:
154
索引常用的数据结构为B+树。结构如下如上图,是一颗b+树,关于b+树的定义可以参见B+树,这里只说一些重点,浅蓝色的块我们称之为一个磁盘块,可以看到每个磁盘块包含几个数据项(深蓝色所示)和指针(黄色所示),如磁盘块1包含数据项17和35,包含指针P1、P2、P3,P1表示小于17的磁盘块,P2表示在17和35之间的磁盘块,P3表示大于35的磁盘块。真实的数据存在于叶子节点即3、5、9、10、13、1...
分类:
数据库 时间:
2015-07-29 17:22:10
阅读次数:
211
二叉树是一种非常重要的数据结构,很多其它数据结构都是基于二叉树的基础演变而来的。对于二叉树,有前序、中序以及后序三种遍历方法。因为树的定义本身就是递归定义,因此采用递归的方法去实现树的三种遍历不仅容易理解而且代码很简洁。而对于树的遍历若采用非递归的方法,就要采用栈去模拟实现。在三种遍历中,前序和中序...
分类:
其他好文 时间:
2015-07-25 21:28:11
阅读次数:
133
二叉树的定义:n(n>=0)个结点的有限集合,该集合或者为空集(称为空二叉树),或者由一个根结点和两棵互相不相交的、分别称为根结点的左子树和右子树的二叉树组成。二叉树的特点:
0<=度<=2;
左右子树是有顺序的,不能颠倒;
不论有几棵子树,也要区分它是左子树还是右子树。
二叉树的五种基本形态:
空二叉树;
只有一个根结点;
根结点只有左子树;
根结点只有右子树;
根结点既有左子树又有右子树。
举例...
分类:
编程语言 时间:
2015-07-23 23:48:52
阅读次数:
322