数据结构第六章06-1

合集下载

数据结构数据结构6

数据结构数据结构6

// 访问结点
4 Preorder(T->lchild, visit); // 遍历左子树
5 Preorder(T->rchild, visit);// 遍历右子树
6} 7}
T
A
B
D
可以这样理解:无论先序、中序、后序 遍历二叉树,遍历时的搜索路线是相同的: 从根节点出发,逆时针延二叔叉树外缘移动 对每个节点均途径三次。
(2) 若 2i>n,则该结点无左孩子, 否则,编号为 2i 的结点为其左孩子结点; (3) 若 2i+1>n,则该结点无右孩子结点, 否则,编号为2i+1 的结点为其右孩子结点。
6.3
二叉树的存储结构
一、 二叉树的顺序 存储表示
二、二叉树的链式 存储表示
一、 二叉树的顺序存储表示
#define MAX_TREE_SIZE 100 // 二叉树的最大结点数
}
void Inorder_I(BiTree T, void (*visit) (TelemType& e)){
Stack *S;
t = GoFarLeft(T, S); // 找到最左下的结点
while(t){ visit(t->data); if (t->rchild) t = GoFarLeft(t->rchild, S);
二叉树 的重要特性
性 质
1

在二叉树的第 i 层上至多有
2i-1 个结点。 (i≥1)
用归纳法证明:
归纳基: i = 1 层时,只有一个根结点: 2i-1 = 20 = 1;
归纳假设:假设对所有的 j,1≤ j i,命题成立; 归纳证明:二叉树上每个结点至多有两棵子树,

【课件】数据结构第6章图ppt

【课件】数据结构第6章图ppt

6.1 图的逻辑结构
V1 V3
V4 V1
V3
V2 若顶点vi和vj之间的边没有方向,则 称这条边为无向边,表示为(vi,vj)。 如果图的任意两个顶点之间的边都
V5 是无向边,则称该图为无向图。
V2 若从顶点vi到vj的边有方向,则称这 条边为有向边,表示为<vi,vj>。 如果图的任意两个顶点之间的边都
第6章 图
本章的主要内容是:
图的逻辑结构 图的存储结构及实现 图的连通性 最小生成树 最短路径 AOV网与拓扑排序 AOE网与关键路径
2019/10/26
第6章 图
图是一种非常复杂的非线性结构,并且具有极强的表达能力, 现实世界中的许多问题都可以抽象为图结构。本章是本课程 的难点和重点。通过本章的学习,要求学生:
i =1
V1
V2
V3
V4
V5
在具有n个顶点、e条边的无向图G中,各顶点 的度之和与边数之和的关系?
6.1 图的逻辑结构
图的基本术语
V1
V2
n
n
ID(vi ) = OD(vi ) = e
i=1
i=1
V3
V4
在具有n个顶点、e条边的有向图G中,各顶点 的入度之和与各顶点的出度之和的关系?与边 数之和的关系?
A
B
C
D
E
F
线性结构
A
V1
V2
B
C
V3
D
EF
V4
V5
树结构
图结构
在线性结构中,元素之间的关系为前驱和后继; 在树结构中,结点之间的关系为双亲和孩子; 在图结构中,顶点之间的关系为邻接。
6.1 图的逻辑结构

数据结构课件第六章

数据结构课件第六章

6
广义表表示法
( A ( B ( E ( K, L ), F ), C ( G ), D ( H ( M ), I, J ) )
根作为由子树森林组成的表的名字写在表的左边
data link 1 link 2 ... 麻烦问题:应当开设多少个链域? link n
7
左孩子-右兄弟表示法
( A ( B ( E ( K, L ), F ), C ( G ), D ( H ( M ), I, J ) ) ) 数据 右兄弟 左孩子
数据结构课程的内容
1
第6章 树和二叉树( Tree & Binary Tree )
特点:非线性结构,一个直接前驱,但可能有多个 直接后继(1:n)
6.1 6.2 6.3 6.4 6.5
树的基本概念 二叉树 遍历二叉树和线索二叉树 树和森林 赫夫曼树及其应用
2
6.1
1.
2 3. 4. 5.
树的基本概念
24
3. 二叉树的存储结构
一、顺序存储结构 按二叉树的结点“自上而 B 下、从左至右”编号,用 一组连续的存储单元存储。 D E
H I A
T[0]一 般不用
C F G
问:顺序存储后能否复原成唯一对应的二叉树形状? 答:若是完全/满二叉树则可以做到唯一复原。 而且有规律:下标值为i的双亲,其左孩子的下标值必为 2i,其右孩子的下标值必为2i+1(即性质5) 例如,对应[2]的两个孩子必为[4]和[5],即B的左孩子必 是D,右孩子必为E。
(除根结点外,每个结点必有一个直接前趋,即一个分支)
而 总分支数B= n1+2n2 (1度结点必有1个直接后继,2度结点必有2个)
三式联立可得: n0+n1+n2= n1+2n2 +1, 即n0=n2+1

数据结构第六章

数据结构第六章
i 1 k ( 第 i 层的最大结点数 ) 2 2 1 i 1 i 1 k k
K
L
M
任何一棵非空树是一个二元组 Tree = (root,F) 其中:root 被称为根结点, F 被称为子树森林

6.2 二叉树
定义
定义:二叉树是n(n0)个结点的有限集,它或为空树 (n=0),或由一个根结点和两棵分别称为左子树和右子树 的互不相交的二叉树构成 二叉树,度为2的树? 特点
树和二叉树
树是一类重要的非线性数据结构,以分支 关系描述数据元素之间的层次结构 6.1 树 定义: 树(tree)是n(n≥0)个结点的有限集。在任意一棵非
空树中:
有且仅有一个特殊的结点,称为树的根结点(root)
当n>1时,除根结点之外的其余结点可分为
m(m>0)个 互不相交的有限集合T1,T2,……Tm,其 中每一个集合本身又是一棵树,称为根的子树 (subtree)
证明:用归纳法证明之 i=1时,只有一个根结点,2i-1 = 20 = 1; 假设对所有j(1j<i)命题成立,即第j层上至多有2j-1 个结 点,那么,第i-1层至多有2i-2个结点 又二叉树每个结点的度至多为2 第i层上最大结点数是第i-1层的2倍,即2i-2 2 = 2i-1 故命题得证 k 性质2:深度为k的二叉树至多有 2 1 个结点(k1) 证明:由性质1,可得深度为k 的二叉树最大结点数是
基本操作 P :
插入类:
InitTree(&T) // 初始化臵空树 CreateTree(&T, definition) // 按定义构造树 Assign(T, cur_e, value) // 给当前结点赋值 InsertChild(&T, &p, i, c) // 将以c为根的树插入为 结点p的第i棵子树

数据结构第6章_树

数据结构第6章_树

/*以上为初始化*/
2019/9/21
24
while((ch=getchar())!=‘#’) /* 输入一个字符,当不是结束符时执行以下操 作 */
{
s=NULL;
if(ch!=‘@’) /* @表示虚结点,当不是虚结点则建立新结点 */
{ s=malloc(sizeof (bitree));
s→data=ch;
22
算法具体实现
依据先建立的结点,其孩子结点也一定先建立的特点,所 以可以设置一个指针数组构成的队列来保存已输入结点 的地址(虚结点的地址为空),并使队尾(rear)指向当前 输入的结点;队头(front)指向这个结点的双亲结点。 由于根结点的地址放在(顺序)队列的(指针)数组下 标为1的数组单元里,所以当rear为偶数时,则rear所指 的结点应作为左孩子与其双亲链接,否则rear所指的结 点应作为右孩子与其双亲链接。
if (rear % 2= =0) Q[front]→lchild=s;/*rear为偶数,新结点是左孩子
*/
else Q[front]→rchild=s; /* rear为奇数且不等于1,新结点是右孩子
*/
if (rear % 2= =1) front++; /* 结点* Q[front]的两个孩子处理完毕,出队列 */
4@5@6@ 7 D
一般二叉树的结点编号
左图的一般二叉树的顺序存储
编号 0 1 2 3 4 5 6 7
结点值
A B C@@@D
根据性质2,采用顺序存储结构存储一棵深度为k的完全二 叉树或一般二叉树,向量的长度是2k-1。
2019/9/21
16
由于一般二叉树必须仿照完全二叉树那样存储,可能会浪费 很多存储空间,单支树就是一个极端情况。

数据结构第6章

数据结构第6章
假设有两个图G=(V,E)和G’=(V’,E’),如果
V’ V且E’ E,则称G’为G的子图。
下图所示是子图的一些例子。
子图是在原图上删去若干条边或若干个点剩下的图。 删边指删去图中的某一条边但仍保留边的顶点。
删点指删去图中某一点以及与这点相连的所有边。 图中删去一点所得的子图称为主子图。 设有一个n阶无向图,在其中添加一些边后,可使其成 为n阶完全图。 由这些新添加的边和其顶点构成的图称为原图的补 图。
有向图中的极大强连通子图称为有向图的强连通分量。 例如,下图不是强连通图,但它有两个强连通分量。
在图的顶点或边上表明某种信息的数称为权,含 有权的图,称为赋权图。
例如,下图就是一个赋权图。
最短路径问题的算法: 先求出到某一顶点的最短路径,然后利用这个结 果再去确定到另一顶点的最短路径,如此继续下去, 直到找到最短路径为止。 如果图中存在一条通过图中各边一次且仅一次的 回路,则称此回路为欧拉回路,具有欧拉回路的图称 为欧拉图。
0 1 1 1
对于无向图G=(V,E),顶点v的度是和v相连的边的 数目,记为D(v)。
对于有向图G=(V,R),以顶点t为弧头的弧的数目 称为顶点t的入度,记为ID(t);以顶点t为弧尾的弧的 数目称为顶点t的出度,记为OD(t);顶点t的度记为 D(t)=ID(t)+OD(t)。
特殊情况下,度数为零的顶点称为孤立点,度数为 1的顶点称为悬挂点。
定理6:设图G是有向连通图,图G是半欧拉图的 充要条件是至多有两个顶点的出度和入度不相等,其 中一个顶点的入度比它的出度大1,另一个顶点的入度 比它的出度小1,而其他顶点的入度和出度相等。
一个连通图的生成树是一个极小的连通子图,它 含有图中全部顶点,但只有构成一棵树的n-1条边。

数据结构(C语言版)第6章

数据结构(C语言版)第6章

3
4 (c) G3
6
2
2
(d) G4
2.路径和回路 在无向图G中 若存在一个顶点序列 在无向图 中,若存在一个顶点序列Vp ,Vi1,Vi2,…,Vin, , Vq, 使得(Vp,Vi1),(Vi1,Vi2),…..,(Vin,Vq)均属于 (G),则称顶 使得( 均属于E( ), ),则称顶 , 均属于 存在一条路径。 点Vp到Vq存在一条路径。 若一条路径上除起点和终点可以相同外,其余顶点均不相同, 若一条路径上除起点和终点可以相同外,其余顶点均不相同, 则称此路径为简单路径 简单路径。 则称此路径为简单路径。 起点和终点相同的路径称为回路; 起点和终点相同的路径称为回路; 回路 简单路径组成的回路称为简单回路。 简单路径组成的回路称为简单回路。 路径长度 路径上经过的边的数目称为该路径的路径长度。 路径上经过的边的数目称为该路径的路径长度。 边的数目称为该路径的路径长度 非带权图的路径长度是指此路径上边/弧的条数。 非带权图的路径长度是指此路径上边/弧的条数。 带权图的路径长度是指路径上各边/弧的权之和。 带权图的路径长度是指路径上各边/弧的权之和。
第6章

本章主要介绍图的基本概念、 本章主要介绍图的基本概念 、 图的存储结构和有关图 的一些常用算法。通过本章学习: 的一些常用算法。通过本章学习: 1) 了解图的定义和术语 2) 掌握图的各种存储结构 3) 掌握图的深度优先搜索和广度优先搜索遍历算法 4) 理解最小生成树 、 最短路径 、 拓扑排序 、 关键路径 理解最小生成树、 最短路径、 拓扑排序、 等图的常用算法
无向图, 表示同一条边,因此,在邻接矩阵中A 无向图 , ( vi,vj) 和 ( vj,vi) 表示同一条边 , 因此 , 在邻接矩阵中 ij=Aji。 无向图的邻接矩阵是(关于主对角线)对称矩阵,可用主对角线以上(或以 无向图的邻接矩阵是( 关于主对角线) 对称矩阵, 可用主对角线以上( 的部分表示。 下)的部分表示。 对有向图, 表示方向不同的两条弧, 对有向图,弧<vi,vj>和< vj,vi >表示方向不同的两条弧,Aij和Aji表示不同 和 表示方向不同的两条弧 的弧,所以有向图的邻接矩阵一般不具有对称性。 的弧,所以有向图的邻接矩阵一般不具有对称性。 邻接矩阵表示法适合于以顶点为主的运算。 邻接矩阵表示法适合于以顶点为主的运算。 对于无向图,顶点v 的度等于邻接矩阵第i行的元素之和, 对于无向图,顶点vi的度等于邻接矩阵第i行的元素之和,即:

数据结构第6章

数据结构第6章

第 6 章图6.1 图的逻辑结构6.1.1 图的定义和基本术语在图中,常常将数据元素称为顶点,将顶点之间的关系用边来表示。

1. 图的定义图是由顶点的有穷非空集合和顶点之间边的集合组成,通常表示为:G=(V,E)。

2. 图的基本术语简单图图中,若不存在顶点到其自身的边,且同一条边不重复出现,则称这样的图为简单图。

邻接、依附在无向图中,对于任意两个顶点v i和v j,若存在边(v i,v j),则称顶点v i和v j互为邻接点,同时称边(v i,v j)依附于顶点v i和v j。

在有向图中,对于任意两个顶点v i和v j,若存在弧<v i,v j>,则称顶点v i邻接到v j,顶点v j邻接自v i,同时称弧<v i,v j>依附于顶点v i和v j。

在不致混淆的情况下,通常称v j是v i的邻接点。

无向完全图、有向完全图在无向图中,如果任意两个顶点之间都存在边,则称该图为无向完全图,n个顶点的无向完全图有n ×(n-1)/2条边。

在有向图中,如果任意两顶点之间都存在方向互为相反的两条弧,则称该图为有向完全图,n个顶点的有向完全图有n×(n-1)条边。

稠密图、稀疏图称边数很少的图为稀疏图,反之,称为稠密图。

顶点的度、入度、出度在无向图中,顶点v 的度是指依附于该顶点的边的个数,记为TD (v )。

在具有n 个顶点e 条边的无向图中,有下式成立:e v TD ni i 2)(1=∑= 在有向图中,顶点v 的入度是指以该顶点为弧头的弧的个数,记为ID (v );顶点v 的出度是指以该顶点为弧尾的弧的个数,记为OD (v )。

在具有n 个顶点e 条边的有向图中,有下式成立:∑∑====ni i n i i e v OD v ID 11)()( 权、网图中,权通常是指对边赋予的有意义的数值量。

边上带权的图称为网或网图。

路径、路径长度、回路无向图G =(V ,E ),顶点v p 到v q 之间的路径是一个顶点序列v p =v i 0, v i 1, …, v im =v q ,其中,(v ij -1, v ij )∈E (1≤j ≤m );如果G 是有向图,则<v ij -1, v ij >∈E (1≤j ≤m )。

最新课件-数据结构教学第6章树 精品

最新课件-数据结构教学第6章树 精品

由二进制换算关系可知: 20+ 21+ 22+…+ 2k-1 = 20, 因此二 叉树树中结点的最大数目为20。 性质3在任意二叉树中, 若叶子结点(即度为零的结点) 个数为n0, 度为1的结点个数为n1, 度为2的结点个数为n2, 那么 n0 = n2+1。 设n代表二叉树结点总数, 那么 n = n0 + n1 + n2 (6.1)
由于有n个结点的二叉树总边数为n-1条, 于是得
n-1=0* n0 +1* n1+2* n2
将式(6.1)代入式(6.2) n0= n2+1
(6.2)
有两种特殊形态的二叉树 , 它们是满二叉树和完全二叉树。 深度为k并且含有2k-1个结点的二叉树称为满二叉树, 这种树的
特点是每层上的结点数都是最大结点数, 如图6.4(a)所示。对满
图6.1是一棵由 11 个结点组成的树T。 其中A是根结点, 其 余结点分为三个互不相交的子集: T1 ={B,E,F}, T2 ={C,G}, T3
={D,H,I,J,K}。 T1、 T2 、 T3都是树根A的子树, 这三棵子树的
根结点分别是B、 C、 D。每棵子树本身也是一棵树, 可继续划 分。 例如子树T3以D为根结点, 它的其余结点又可分为三个互
第6章树
6.1 树的基本概念和术语 6.2 二叉树
6.3
6.4
6.5 二叉树、 树和森林
6.6 树的应用
6.7 二叉树的建立和遍历C语言源程序示例
返回主目录
第 6章 树
6.1 树的基本概念和术语
6.1.1
树(tree)是由一个或多个结点组成的有限集合T。 其中: (1) 有一个特定的结点称为该树的根(root)结点; (2) 除根结点之外的其余结点可分为 m(m≥0)个互不相 交的有限集合T1, T2, …, Tm, 且其中每一个集合本身又是一棵树, 称之为根的子树(subtree)。 这是一个递归的定义, 即在定义中又用到了树这个术语。 它反应了树的固有特性。可以认为仅有一个根结点的树是最 小树, 树中结点较多时, 每个结点都是某一棵子树的根。

精品课件-数据结构-C语言描述-第6章

精品课件-数据结构-C语言描述-第6章
结点,结论成立。设当i=k时结论成立,即二叉树上至多有2k–1 个 结点, 则当i=k+1时,因为每个结点最多只有两个孩子,所以,第 k+1层上至多有2*2k –1 =2k个结点,性质成立。
第6章 树 性质2 高度为h的二叉树上至多有2h -1个结点。 当h=0时,二叉树为空二叉树。当h>0时,利用性质1,高度为h 的二叉树中结点的总数最多为
(6-2)
2h 1 - 1 < n≤2h - 1
移项得 (6-3)
2h 1 < n+1≤2h
取对数 (6-4)
h - 1 < lb(n+1)≤h
第6章 树
性质6 假定对一棵有n个结点的完全二叉树中的结点,按从 上到下、从左到右的顺序,从1到n编号(见图6-7),设树中某一 个结点的序号为i,1≤i≤n,则有以下关系成立:
第6章 树
图6-1描述了欧洲部分语言的谱系关系,它是一个后裔图, 图中使用的描述树形结构数据的形式为倒置的树形表示法。在前 几章中,我们学习了多种线性数据结构,但是一般来讲,这些数 据结构不适合表示如图6-1所示的层次结构的数据。为了表示这 类层次结构的数据,我们采用树形数据结构。在本章中我们将学 习多种不同特性的树形数据结构,如一般树、二叉树、穿线二叉 树、堆和哈夫曼树等。
第6章 树
Proto Indo-European 原始印欧语
Italic 古意大利语
… Latin 拉丁语
Hellenic 古希腊语
Greek 希腊语

Germanic 日尔曼语
North Germanic 北日尔曼语

West Germanic 西日尔曼语
Spanish French Italian 西班牙语 法语 意大利语

数据结构---第六章.

数据结构---第六章.
数据结构---第六章 树和二叉树 15
6.2.4.2 链式存储结构 [二叉链表] lc bt data rc bt [三叉链表/带双亲的二叉链表] lc data parent rc
A
^ B ^ ^ D ^ E ^
数据结构---第六章 树和二叉树
A ^
^ ^ D ^ E ^
16
C ^
^ B
C
^
[二叉链表的类型定义] typedef char ElemType; //按需定义ElemType类型 typedef struct node {
1 2 3
4
8 9 10
5
11 12
6
7
数据结构---第六章 树和二叉树
12
6.2.3 二叉树的基本操作
1)初始化 2)建树 3)清空 4)求根 5)求双亲 6)求孩子结点 7)求兄弟 8)插入子树 9)删除子树 10)遍历 InitBiTree CreatBiTree ClearBiTree Root Parent LeftChild / RightChild LeftSibling / RightSibling InsertLeftChild /InsertRightChild DeleteLeftChild / DeleteRightChild PreOrderTraverse/ InOrderTraverse/ PostOrderTraverse/ LevelOrderTraverse
数据结构---第六章 树和二叉树 5
结点的层次 表示该结点在树中的相对位置。根为第一层, 其它的结点依次下推;若某结点在第L层上,则其孩子 在第L+1层上。 堂兄弟 双亲在同一层的结点互为堂兄弟。 树的深(高)度 树中结点的最大层次。 有序树 树中各结点的子树从左至右是有次序的,不能互 换。否则,称为无序树。 路径长度 从树中某结点Ni出发,能够“自上而下地”通 过树中结点到达结点Nj,则称Ni到Nj存在一条路径,路 径长度等于这两个结点之间的分支数。 树的路径长度 从根到每个结点的路径长度之和。 森林 是m(m0)棵互不相交的树的集合。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

性质6-2: 树高为k(k≥1)的二叉树,
最多有2k−1个结点。
【证明】由性质6-1可知,在树高为k的
二叉树里,第1层有20个结点,第2层有21个
结点,第3层有22个结点,……,第k层有2k1个结点。因此,要求出树高为k的二叉树的
结点个数,就是求和:
20 + 21 + 22 +…+ 2k-1=2k-1.证毕
2020/8/3
21
(1)如果i=1,则该结点为这棵完全 二叉树的根结点,它没有父结点;
(2)如果i>1,则该结点的父结点的 序号为i/2取整数(即i除以2后的整数 商);
2020/8/3
22
(3)如果2i>n,则序号为i的结点 没有左子树,否则其左孩子(即左子树 的根结点)的序号为2i;
(4)如果2i+1>n,则序号为i的结 点没有右子树,否则其右孩子(即右子 树的根结点)的序号为2i+1。
25
图6-7 完全二叉树的顺序存储
2020/8/3
26
可采用增添一些并不存在的空结点的方 法,把一般的二叉树改造成为一棵完全二叉 树。
图6-8 把一般二叉树改造成完全二叉树
2020/8/3
27
这种为了实现顺序存储,用增添空结点 改造一般二叉树的方法,可能会造成大量存 储空间的浪费,最坏的情况出现在右单支树。
2020/8/3
17
性质6-3:如果一棵二叉树中,度为0的
结点个数为n0,度为2的结点个数为n2,则有 关系:n0 = n2 + 1。
【证明】设二叉树中度为1的结点个数为
n1,那么二叉树总的结点个数n应该是: n = n0 + n1 + n2 (1)
2020/8/3
18
另一方面,二叉树中除根结点外,其 余每个结点都有一个向上的分支指向其父
2020/8/3
9
所谓一个结点的“度”,是指该结点 拥有子树的个数。
对于二叉树来说,任何一个结点的度 最多是2。
通常,把二叉树中那些度为0的结点, 称作是“叶子”结点。
2020/8/3
10
“满二叉树”,是指该二叉树的每一个 结点,或是有两个非空子树的结点,或是叶 结点,且每层都必须含有最多的结点个数。
第6章 树与二叉树-1
6.1 二 叉 树 概 述
6.2 二 叉 树 的 存 储 结 构
6.3 遍 历 二 叉 树
6.4 哈 夫 曼 树 及 哈 夫 曼 编 码
2020/8/3
1
本讲讨论二叉树,它是一种非常重要的
非线性数据结构,有着广泛的用途。
主要介绍以下几个方面的内容:
• 二叉树的定义及性质; • 二叉树的存储实现(顺序和链式存储); • 遍历二叉树(即对二叉树存储结点访问的 各种形式);
结点。如设二叉树种分支边数为m,那么
二叉树总的结点个数n应该是分支边数m加 上1(这个1是根结点),即:
n=m+1
(2)
2020/8/3
19
注意到每一条分支边或是由度为1的结
点发出,或是由度为2的结点发出,度为1的
结点发出一条边,度为2的结点发出两条边。
因此,又有关系:
m = n1 + 2×n2
(3)
• 哈夫曼树及编码。
2020/8/3
2
6.1 二叉树概述 6.1.1 二叉树的基本概念
所谓“二叉树”,是一个由结点组成的 有限集合。这个集合或为空,或由一个称为 根的结点以及两棵不相交的二叉树组成,这 两棵二叉树分别称为根结点的左子树和右子 树。
2020/8/3
3
当二叉树非空时,通过结点间的边来 表示从一个结点到它的两个子结点间的联 系,这个结点称为父结点,两个子结点称 为父结点的孩子。
把式(3)代入式(2),得:
n = n1 + 2×n2 + 1 (4)
综合式(1)和式(4),立即可以得出
所需要的结论。
2020/8/3
20
性质6-4:对于有n个结点的完全二叉树, 将其所有的结点按照从上到下、从左到右的 顺序进行编号。那么,二叉树中任意一个结 点的序号i(1≤i≤n)满足下面的关系:
图6-3 一棵满二叉树
2020/8/3
11
图6-4所示的两棵二叉树都不是满二叉树。 虽然它们都满足“每个结点或都有两个非空 子树,或是叶结点”的条件,但却违背了 “每层都必须含有最多的结点个数”的要求。
图6-4 非满二叉树
2020/8/3
12
“完全二叉树”,是指该二叉树除最后 一层外,其余各层的结点都是满的,且最后 一层的结点都集中在左边,右边可连续缺少 若干结点。
2020/8/3
23
图6-6 被编号的完全二叉树
2020/8/3
24
6.2 二叉树的存储结构
6.2.1 二叉树的顺序存储结构
利用性质6-4,将完全二叉树中的结点以 编号为序存储在一维数组中,编号就是数组 元素的下标。这样,根据存储结点的下标, 就能得到它与完全二叉树中其他结点的邻接 关系。
2020/8/3
图6-5 两棵完全二叉树
2020/8/3
13
由完全二叉树的定义可知,满二叉树 一定是一棵完全二叉树,但完全二叉树却 不一定是一棵满二叉树。
2020/8/3
14
6.1.2 二叉树的性质
性质6-1~性质6-3对任何二叉树都成立, 性质6-4只是针对完全二叉树的。
性质6-1:在任何一棵二叉树的第i (i≥1)层上,最多有2i-1个结点。
2020/8/3
15
【证明】二叉树的第1层只有一个结点。
所以,当i=1时,2i-1=20=1成立。 假设结论对第i层成立,即第i层最多有
2i-1个结点。由于二叉树每个结点的度最多
为2,因此第i+1层结点的个数,最多应该是 第i层结点个数的2倍,即22i-1 = 2i,命题
得证。
2020/8/3
16
2020/8/3
7
从二叉树中的一个结点到达另一个结点 所经由的路线,称为一条“路径”。对于路 径来说,从开始结点到终止结点,中间经过 的分支个数,称为路径的“长度”。
2020/8/3
8
二叉树是一种层次结构。通常,把它的 根算作第1层,其余结点的层次值,为其父 结点所在层值加1。
一棵二叉树的“高度”,是指该二叉树 的最大层次数值。
二叉树有如下的特征:
2020/8/3
4
• 二叉树可以是空的,空二叉树没有任何结 点; • 二叉树上的每个结点最多可以有两棵子树, 这两棵子树是不相交的; • 二叉树上一个结点的两棵子树有左、右之 分,次序是不能颠倒的。
2020/8/3
5
图6-1 二叉树的五种基本形态
20/8/3
6
图6-2 两棵不同的二叉树
相关文档
最新文档