数据结构第5章—树和二叉树

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

顺序存储结构
❖它是用一组连续的存储单元存储二叉树的数据元素。 因此,必须把二叉树的所有结点安排成为一个恰当的序 列,结点在这个序列中的相互位置能反映出结点之间的 逻辑关系,用编号的方法:
#define MAX-TREE-SIZE 100
typedef TElemType SqBiTree[MAX-TREESIZE];
A、n=h+m B、h+m=2n C、m=2h-1 D、n=2h-1
答案:1(C) 2(B) 3(C、D)
东莞理工学院城市学院 计算机与信息科学系 软件工程教研室
5.2.2 二叉树的性质
填空题
1、深度为k的完全二叉树至少有( )个结点,至多
有( )个结点,若自上而下,从左到右次序给结点
编号(从1开始),则编号最小的叶子结点的编号是
取对数 k-1 < log2n ≤ k,又k是整数, 因此有 h = log2n +1
东莞理工学院城市学院 计算机与信息科学系 软件工程教研室
5.2.2 二叉树的性质
【性质5】如果对一棵有n个结点的完全二叉树的结点 按层序编号(从第1层到第 log2n +1层,每层从左到右) ,则对任一结点i(1 ≤ i ≤ n),有:
i 1
东莞理工学院城市学院 计算机与信息科学系 软件工程教研室
5.2.2 二叉树的性质
【性质3 】对任何一棵二叉树T,如果其叶结点数为 n0, 度为2的结点数为 n2,则n0=n2+1。 【证明】设二叉树中度为1的结点数为n1,二叉树中总结点
数为:n=n0+n1+n2 二叉树中的分支数,除根结点外,其余结点都有一个进
编码及带权路径长度的计算。
东莞理工学院城市学院 计算机与信息科学系 软件工程教研室
本章内容
5.1 树的定义和基本术语 5.2 二叉树 5.3遍历二叉树和线索二叉树 5.4树和森林 5.5 赫夫曼树及其应用
东莞理工学院城市学院 计算机与信息科学系 软件工程教研室
5.1 树的定义和基本术语
5.1.1 树的定义
M
则A结点是B结点的双亲;如B是E的双亲。
4、兄弟结点:同一双亲的孩子结点;如H、I、J互为兄弟。
5、堂兄结点:同一层上结点;如G与E、F、H、I、J互为堂兄
6、祖先结点:结点的祖先是从根到该结点所经分支上的所有结
点; 如H的祖先为A、D。
东莞理工学院城市学院 计算机与信息科学系 软件工程教研室
5.1.2 基本术语
东莞理工学院城市学院 计算机与信息科学系 软件工程教研室
树的逻辑结构特点
1. 树中只有根结点没有前趋; 2. 除根外,其余结点都有且仅一个前趋;
3. 树的结点,可以有零个或多个后继;
4. 除根外的其它结点,都存在唯一条从根到该结点
的路径;
A
5. 树是一种分支结构(除了一个 称为根的结点外)每个元素都有 且仅有一个直接前趋,有且仅有
东莞理工学院城市学院 计算机与信息科学系 软件工程教研室
树的表示法
嵌套集合表示法
凹入表表示法
广义表表示法
东莞理工学院城市学院 计算机与信息科学系 软件工程教研室
树的示例
A
B
C
D
E
FG H I J
KL
M
T = { A,B,C,D,E,F,G,H,I,J,K,L } A是根,其余结点可以划分为3个互不相交的集合: T1= { B,E,F,K,L } T2 ={ C,G } T3 ={ D,H,I,J,M } 这些集合中的每一集合都本身又是一棵树,它们是A的子树。 对于T1,B是根,其余结点可以划分为2个互不相交的集合: T11 ={ E,K,L } T12 ={ F } T11,T12是B的子树。
( )。
2、一棵有n(n>0)个结点的满二叉树共有( )个叶
子结点和( )个非叶子结点。
3、P139 习题6题
答案:
1、2k-1, 2k-1,2k-1
2、2log2(n+1)-1 , 2log2(n+1)-1-1 3、 2h-1,2h-1
东莞理工学院城市学院 计算机与信息科学系 软件工程教研室
5.2.3 二叉树的存储结构
东莞理工学院城市学院 计算机与信息科学系 软件工程教研室
5.2.2 二叉树的性质
选择题
1、按二叉树的定义,具有3个结点的二叉树有( )
种。
A、3 B、4
C、5
D、6
2、深度为5的二叉树至多有( )个结点。
A、16 B、31 C、32 D、10
3、对一个满二叉树,m个树叶,n个结点,深度为h,
则( )。
东莞理工学院城市学院 计算机与信息科学系 软件工程教研室
5.2.2 二叉树的性质
【性质2 】深度为 k 的二叉树至多有 2k-1个结点(k ≥1) 【证明】由【性质1】可见,深度为k的二叉树的最大结 点数为
k
(第i层上的最大结点数)
i 1
=
k
2i 1
= 20 + 21 + … + 2k-1 = 2k-1
B
C
D
E
FGH I J
零个或多个直接后继。
KL
M
东莞理工学院城市学院 计算机与信息科学系 软件工程教研室
树的应用
树可表示具有分支结构关系的对象
【例1】 家族族谱
设某家庭有13个成员A、B、C、D、E、F、G、H
、I、J、K、L、M,他们之间的关系可如图所示的
树表示。
A
Байду номын сангаас
【例2】 单位行政机构的组织关系 B
二叉树的形态
φ
L
L
R
R
(a)
(b)
(c)
(d)
(e)
(a) 空树
(b) 只含根结点
(d) 左右子树均不为空树
(c) 右子树为空树 (e) 左子树为空树
东莞理工学院城市学院 计算机与信息科学系 软件工程教研室
两种特殊的二叉树
1、满二叉树:深度为k的二叉树,有2k-1个结点则称为 满二叉树; 2、完全二叉树:如果深度为k、由n个结点的二叉树中 个结点能够与深度为k的顺序编号的满二叉树从1到n标 号的结点相对应,则称为完全二叉树。 完全二叉树的特点是: 1. 所有的叶结点都出现在第k层或k-1层(即:倒数两层)。 2. 对任一结点,如果其右子树的最大层次为L ,则其 左子树的最大层次为 L 或 L+1。
东莞理工学院城市学院 计算机与信息科学系 软件工程教研室
一般二叉树的顺序表示
一般二叉树也按完全二叉树形式存储,只有增添一些并不
存在的空结点(用Ø表示,Ø 表示该处没有元素存在,仅仅为了
好理解),使之成为一棵完全二叉树的形式,然后再用一维数组
7、子孙结点:以某结点为根的子树中的任一结点称为
该结点的子孙;如A的子孙为B、C、…、L、M。 A
8、结点的度:结点子树的个数;
B
C
D
如D的度为3。
E
FGH I J
9、叶子结点:也叫终端结点,
KL
M
是度为0的结点;如K、L、F、G、M、I、J。
10、分支结点:度不为0的结点;如A、B、C、D
11、结点层次:根结点的层定义为1,根的孩子为第二层结点,
【性质1 】在二叉树的第 i 层上至多有 2i -1个结点。(i ≥ 1) 【证明】当i=1时,只有根结点,2 i-1=2 0=1。
假设对所有j, 1≤j﹤i,命题成立,即第j层上至多 有2 j-1 个结点。
由归纳假设第i-1 层上至多有 2i -2个结点。 由于二叉树的每个结点的度至多为2,故在第i层上 的最大结点数为第i-1层上的最大结点数的2倍,即2×2i -2= 2 i-1。
数据结构
—— 第5章 树和二叉树
目标
1、理解树的定义和基本术语,重点了解二叉树 的定义、性质和存储结构。
2、掌握二叉树遍历的递归算法及它的典型运算。 3、理解线索化二叉树的特性以及寻找某结点的
前驱和后继的方法。 4、理解树、森林和二叉树间的相互转换规则。 5、掌握哈夫曼树的实现方法,理解构造哈夫曼
入分支,设B为二叉树中的分支总数, 则有:n=B+1。 由于这些分支都是由度为1和2的结点射出的,所以有: B=n1+2×n2 ;即: n=B+1=n1+2×n2+1
得到: n0+n1+n2 =n1+2×n2+1 ;即:n0=n2+1
东莞理工学院城市学院 计算机与信息科学系 软件工程教研室
5.2.2 二叉树的性质
【性质 4】具有 n 个结点的完全二叉树的深度为 log2n +1。 【说明】 x 表示不大于x的最大整数,如3.2 =3; 【证明】设完全二叉树的深度为 k,则根据【性质2 】 和完全二叉树的定义有
2k-1-1< n ≤2k-1或 2k-1 ≤ n< 2k( n=2k-1 表示第k层只 有最左边一个结点,n= 2k-1表示满二叉树)
C
D
E
FG H I J
KL
M
东莞理工学院城市学院 计算机与信息科学系 软件工程教研室
树的应用
树是常用的数据组织形式
有些应用中数据元素之间并不存在分支结构关系,但是
为了便于管理和使用数据,将它们用树的形式来组织。
【例3】计算机的文件系统
不论是DOS文件系统还是window文件系统,所
有的文件是用树的形式来组织的。
C
文件夹1 文件夹2 文件1 文件2
文件夹11 文件夹11 文件11 文件12
东莞理工学院城市学院 计算机与信息科学系 软件工程教研室
5.1.2 基本术语
1、树的结点:包含一个数据元素的 内容及若干指向子树的分支。
A
B
C
D
2、孩子结点:结点的子树的根称为
E
FGH I J
该结点的孩子;如E是B的孩子。 K L 3、双亲结点:B结点是A结点的孩子,
东莞理工学院城市学院 计算机与信息科学系 软件工程教研室
顺序存储结构
通常是按照二叉树结点从上至下、从左到右的 顺序存储,但这样结点在存储位置上的前驱后继关系 并不一定就是它们在逻辑上的邻接关系,只有通过一 些方法确定某结点在逻辑上的前驱结点和后继结点, 这种存储才有意义。
依据二叉树的性质,完全二叉树和满二叉树采 用顺序存储比较合适,树中结点的序号可以唯一地反 映出结点之间的逻辑关系,这样既能够最大可能地节 省存储空间,又可以利用数组元素的下标值确定结点 在二叉树中的位置,以及结点之间的关系。
子树、右子树构成(即不存在度大于2的结点),并且左
、右子树本身也是二叉树。
A
【说明】
B
C
1. 二叉树中每个结点最多有两棵子 D
E
F
树,二叉树每个结点的度≤2;
G
2. 左、右子树不能颠倒——有序树;
3. 二叉树是递归结构,在二叉树的定义中又用到了二
叉树的概念。
东莞理工学院城市学院 计算机与信息科学系 软件工程教研室
东莞理工学院城市学院 计算机与信息科学系 软件工程教研室
完全二叉树的顺序表示
A
B
C
如何反映结点之 间的逻辑关系?
D
E
F
G
例如:
H I JK L
bt[3]的双亲为└3/2┘=1,即在 bt[1]中;
1 2 3 4 5 6 7 8 9 10 11 12 其左孩子在bt[2i]=bt[6]中; A B C D E F G H I J K L 其右孩子在bt[2i+1]=bt[7]中。
❖ 什么是树?树是由 n (n ≥ 0) 个结点的有限集合。它或为空树(n =0);或为非空树,如果是非空树,则
➢ 有且仅有一个特定的称之为根(Root)的结点,它只有直接后 继,但没有直接前驱; ➢ 当n >1,除根以外的其它结点划分为 m (m>0) 个互不相交的 有限集 T1, T2 ,…, Tm,其中每个集合本身又是一棵树,并且称 为根的子树(SubTree)。 【注1】过去许多书籍中都定义树为n≥1,曾经有“空树不是树” 的说法,但现在树的定义已修改。 【注2】树的定义具有递归性,即树中还有树。
东莞理工学院城市学院 计算机与信息科学系 软件工程教研室
两种特殊的二叉树
1
2
4
5
3

满二叉树二
6
7


8 9 10 11 12 13 14 15
1
2
3
4
5
67
8 9 10 11 12
完全二叉树
1
1
2
32
3
4
5
45
6
6 7 非完全二叉树
东莞理工学院城市学院 计算机与信息科学系 软件工程教研室
5.2.2 二叉树的性质
以此类推。
12、树的深度:树中结点的最大层次;如图所示树的深度为4。 13、树的度: 树中各结点的度的最大值;如图所示树的度为3。 14、森林:m(m>=0)棵互不相交的树的集合;
东莞理工学院城市学院 计算机与信息科学系 软件工程教研室
5.2 二叉树
5.2.1 二叉树的定义
二叉树:或为空树,或由根及最多两棵互不相交的左
1. 若i= 1, 则 i 是二叉树的根,无双亲 2. 若i > 1, 则 i 的双亲为i /2 3. 若2i ≤ n, 则 i 的左孩子为2i,否则无左孩子 4. 若2i+1≤n, 则 i 的右孩子为2i+1,否则无右孩子 5. 若 i 为奇数, 且i≠1, 则其左兄弟为i-1 6. 若 i 为偶数, 且i≠n, 则其右兄弟为i+1
相关文档
最新文档