作业-树和二叉树

合集下载

第7章-树和二叉树第2讲-二叉树的概念

第7章-树和二叉树第2讲-二叉树的概念
(root),其余结点可分为m (m≥0)个互不相交的有限子集 T1、T2、…、Tm,而每个子集本身又是一棵树,称为根结点 root的子树。 树中所有结点构成一种层次关系!
第一层
树的特 点?
第二层 第三层 第四层
复习:二、树的基本术语
1.结点A、D的度?树的度? 2;3;3; 2.根结点?分支结点?叶子结点? A;BCDE;GHIJF;
在二叉链中,空指针的个数?
b A
B∧
C
∧D
∧E∧
∧F∧
∧G∧
n个结点 2n个指针域 分支数为n-1 非空指针域有n-1个 空指针域个数 = 2n-(n-1) = n+1
n=7 空指针域个数=8
39/10
40/10
二叉树
当n=3,结果为ห้องสมุดไป่ตู้。
第n个Catalan数
41/23
有n个结点并且高度为n的不同形态的二叉树个数是多少? 该二叉树:有n层,每层一个结点,该结点可以
43/23
结点个数为n,树形可以唯一确定 叶子结点个数为n0,树形不能唯一确定 n为奇数时,n1=0; n为偶数时,n1=1。 n0=n2+1 高度h= log2(n+1),是n个结点高度最小的二叉树
44/23
含有60个叶子结点的二叉树的最小高度是多少?
在该二叉树中,n0=60,n2=n0-1=59,n=n0+n1+n2=119+n1。 当n1=0且为完全二叉树时高度最小。 此时高度h=log2(n+1)= log2120=7。
作为双亲结点的左孩子,也可以作为右孩子 这样的二叉树的个数=1×2×…×2=2n-1。
例如,当n=3时有22=4个这样的二叉树。

树与二叉树

树与二叉树

树与二叉树————————————————————————————————作者:————————————————————————————————日期:作业要求:五:2、3六:2、3、6(1)、7、10七:1、2习题6一.名词解释(1)结点(2)结点的度(3)树的度(4)二叉树(5)哈夫曼树二.判断题(下列各题,正确的请在前面的括号内打√;错误的打ㄨ)( )(1)树结构中每个结点最多只有一个直接前趋。

(ﻩ)(2)完全二叉树一定是满二叉树。

3)由树转换成二叉树,其根结点的右子树一定为空。

(ﻩ)(()(4)在中序线索二叉树中,右线索若不为空,则一定指向其双亲。

( )(5)在前序遍历二叉树的序列中,任何结点的子树的所有结点都是直接跟在该结点之后。

()(6)一棵二叉树中序遍历序列的最后一个结点,必定是该二叉树前序遍历的最后一个结点。

( )(7)用一维数组来存储二叉树时,总是以前序遍历存储结点。

( )(8)已知二叉树的前序遍历和后序遍历不能惟一确定这棵二叉树,这是因为不知道根结点是哪一个。

( )(9)二叉树按某种顺序线索后,任一结点均有指向其前趋和后继的线索。

()(10)二叉树的前序遍历中,任意一个结点均处于其子树结点的前面。

三.填空题1.结点的度是。

2.叶子结点是结点。

3.树的度是。

4.树中结点的最大层次称为树的。

5.对于二叉树来说,第i层上至多有个结点。

6.深度为h的二叉树至多有个结点。

7.对于一棵具有n个结点的树,该树中所有结点的度数之和为:。

8.在一棵二叉树中,度为2 的结点有5 个,度为1 的结点有6 个,则叶子结点数有ﻫ个。

9.由一棵二叉树的前序序列和 序列可惟一确定这棵二叉树。

10.有20个结点的完全二叉树,编码为10的结点的父结点的编号是 。

11.有20个结点的完全二叉树,编码为10的结点的左子树结点的编号是 。

12.一棵含有n 个结点的完全二叉树,它的高度是 。

13.树的存储结构有: 。

14.哈夫曼树是带权路径长度 的二叉树。

第六章 树和二叉树 作业

第六章 树和二叉树 作业

以数据集{2 以数据集{2,5,7,9,13}为权值构造一棵 {2, 13}为权值构造一棵 huffman树 并计算其带权路径长度。 huffman树,并计算其带权路径长度。
2 5 7 9 36 14 22 13
7
7
9
13
2
5
WPL=(2+5)*3+(7+9+13)*2=79
t)
//释放左子树 //释放左子树 //释放右子树 //释放右子树 //释放根节点 //释放根节点
已知一棵二叉树的中序序列为cbedahgijf, 已知一棵二叉树的中序序列为cbedahgijf,后序 序列为cedbhjigfa, 序列为cedbhjigfa,画出该二叉树的先序线索二 叉树。 叉树。 a 中序:c 中序:c b e d a h g i j f 后序:c 后序:c e d b h j i g f a 先序:abcdefghij 先序:abcdefghij
编写一个将二叉树中每个结点的左右孩子交换的算法 分析:采用递归的方式求解。当二叉树的左右孩子之一 分析:采用递归的方式求解。 不空时,将左右孩子交换, 不空时,将左右孩子交换,然后再分别递归处理左右 子树。 子树。
void exchange( BiTree &t) { BiTree m ; if ( !t->lchild||!t->rchild) !t->lchild||!t{ m=tm=t->lchild ; t->lchild =t->rchild; t=tt->rchild=m; exchange(texchange(t->lchild) ; exchange(texchange(t->rchild) ; } }

数据结构树和二叉树习题及答案

数据结构树和二叉树习题及答案

习题六树和二叉树一、单项选择题1.以下说法错误的是()A.树形结构的特点是一个结点可以有多个直接前趋B.线性结构中的一个结点至多只有一个直接后继C.树形结构可以表达(组织)更复杂的数据D.树(及一切树形结构)是一种”分支层次”结构E.任何只含一个结点的集合是一棵树2.下列说法中正确的是()A.任何一棵二叉树中至少有一个结点的度为 2B.任何一棵二叉树中每个结点的度都为 2C.任何一棵二叉树中的度肯定等于 2D.任何一棵二叉树中的度可以小于 23.讨论树、森林和二叉树的关系,目的是为了()A.借助二叉树上的运算方法去实现对树的一些运算B.将树、森林按二叉树的存储方式进行存储C.将树、森林转换成二叉树D.体现一种技巧,没有什么实际意义4.树最适合用来表示()A.有序数据元素 B .无序数据元素C.元素之间具有分支层次关系的数据 D .元素之间无联系的数据5.若一棵二叉树具有10个度为2的结点,5个度为1的结点,则度为0的结点个数是()A.9 B.11 C .15 D .不确定6.设森林F中有三棵树,第一,第二,第三棵树的结点个数分别为M1, M2和M3与森林F对应的二叉树根结点的右子树上的结点个数是()。

A.M1 B .M1+M2 C .M3 D .M2+M37.一棵完全二叉树上有1001个结点,其中叶子结点的个数是()A.250 B .500 C .254 D .505 E .以上答案都不对8.设给定权值总数有n 个,其哈夫曼树的结点总数为()A.不确定 B . 2n C . 2n+1 D . 2n-19.二叉树的第I层上最多含有结点数为()I I-1 I-1 IA.2I B .2I-1-1 C .2I-1D .2I-110.一棵二叉树高度为h, 所有结点的度或为0,或为2,则这棵二叉树最少有()结点A.2h B .2h-1 C .2h+1 D .h+111.利用二叉链表存储树,则根结点的右指针是()。

树和二叉树——精选推荐

树和二叉树——精选推荐

第6章 树和二叉树内容概要:本章主要介绍树,二叉树,最优二叉树的相关概念和操作,存储结构和相应的操作,并在综合应用设计中,给出了对应算法的C 语言实现。

教学目标1.理解各种树和森林与二叉树的相应操作。

2.熟练掌握二叉树的各种遍历算法,并能灵活运用遍历算法实现二叉树的其他操作。

3.熟练掌握二叉树和树的各种存储结构及其建立的算法。

4.掌握哈夫曼编码的方法。

5.通过综合应用设计,掌握各种算法的C 语言实现过程。

基本知识点:树和二叉树的定义、二叉树的存储表示、二叉树的遍历以及其它操作的实现、树和森林的存储表示、树和森林的遍历以及其它操作的实现、最优树和赫夫曼编码重点:二叉树的性质、二叉树的遍历及其应用,构造哈夫曼树。

难点:编写实现二叉树和树的各种操作的递归算法。

本章知识体系结构:课时安排:6个课时树的定义 树树的性质 树的逻辑表示法 树形表示法 树的存储结构 双亲存储结构 文氏表示法凹入表示法 括号表示法 孩子存储结构 孩子双亲存储结构二叉树二叉树的定义 二叉树的性质二叉树的逻辑表示法(采用树的逻辑表示法)二叉树的存储结构二叉树的顺序存储结构先序遍历 中序遍历 后序遍历二叉树的遍历 二叉树的链式存储结构(二叉链) 由先序序列和中序序列构造二叉树 由中序序列和后序序列构造二叉树二叉树的构造 二叉树的线索化 哈夫曼树二叉树和树之间的差别 二叉树与树、森林之间的转换二叉树和树课程数据结构教学教具多媒体课件学时2班级06网络教学日期/课时 /2课时教学单元第6章树和二叉树教学方法讲授(PPT)教学目标掌握树、二叉树的基本概念和术语,二叉树的性质教学重点二叉树的定义、二叉树的性质、链式存储结构教学难点二叉树的性质、链式存储二叉树的基本操作组织教学一、树的定义二、树的基本概念三、二叉树的定义、性质四、二叉树的顺序存储结构和链式存储结构五、小结作业复习本讲内容并预习下一讲内容课堂情况及课后分析课程数据结构教学教具多媒体课件学时2班级06网络教学日期/课时 /2课时教学单元第6章树和二叉树教学方法讲授(PPT)教学目标掌握二叉树遍历的三种方法及二叉树的基本操作教学重点二叉树的遍历算法教学难点中序与后序遍历的非递归算法组织教学一、复习二叉树的定义二、遍历二叉树的三种方法三、递归法遍历二叉树四、二叉树的基本操作五、总结作业复习本讲内容并预习下一讲内容课堂情况及课后分析课程数据结构教学教具多媒体课件学时2班级06网络教学日期/课时 /2课时教学单元第6章树和二叉树教学方法讲授(PPT)教学目标理解树与森林的转换,掌握哈夫曼树教学重点哈夫曼树教学难点树与森林的转换组织教学一、导入二、树与森林三、哈夫曼树四、小结作业习题6课堂情况及课后分析前面几章讨论的数据结构都属于线性结构,线性结构的特点是逻辑结构简单,易于进行查找、插入和删除等操作,可用于描述客观世界中具有单一前驱和后继的数据关系。

数据结构 第六章 树和二叉树作业及答案

数据结构 第六章 树和二叉树作业及答案

第六章树和二叉树作业一、选择题(每题2分,共24分)。

1. 一棵二叉树的顺序存储情况如下:树中,度为2的结点数为( C )。

A.1 B.2 C.3 D.42. 一棵“完全二叉树”结点数为25,高度为(B )。

A.4 B.5 C.6 D.不确定3.下列说法中,(B )是正确的。

A. 二叉树就是度为2的树B. 二叉树中不存在度大于2的结点C. 二叉树是有序树D. 二叉树中每个结点的度均为24.一棵二叉树的前序遍历序列为ABCDEFG,它的中序遍历序列可能是(B )。

A. CABDEFGB. BCDAEFGC. DACEFBGD. ADBCFEG5.线索二叉树中的线索指的是(C )。

A.左孩子 B.遍历 C.指针 D.标志6. 建立线索二叉树的目的是(A )。

A. 方便查找某结点的前驱或后继B. 方便二叉树的插入与删除C. 方便查找某结点的双亲D. 使二叉树的遍历结果唯一7. 有 D )示意。

A.B.C.D.8. 一颗有2046个结点的完全二叉树的第10层上共有(B )个结点。

A. 511B. 512C. 1023D. 10249. 一棵完全二叉树一定是一棵(A )。

A. 平衡二叉树B. 二叉排序树C. 堆D. 哈夫曼树10.某二叉树的中序遍历序列和后序遍历序列正好相反,则该二叉树一定是( C )的二叉树。

A .空或只有一个结点B .高度等于其结点数C .任一结点无左孩子D .任一结点无右孩子11.一棵二叉树的顺序存储情况如下:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15A B C D E 0 F 0 0 G H 0 0 0 X结点D 的左孩子结点为( D )。

A .EB .C C .FD .没有12.一棵“完全二叉树”结点数为25,高度为( B )。

A .4B .5C .6D .不确定二、填空题(每空3分,共18分)。

1. 树的路径长度:是从树根到每个结点的路径长度之和。

对结点数相同的树来说,路径长度最短的是 完全 二叉树。

树与二叉树典型例题讲解

树与二叉树典型例题讲解

A
F
B
J
E
F H
G
I J
例6.14
Huffman编码设计实例
已知某系统在通信联络中只可能出现8种字符,其概率分别为0.05, 0.29,0.07,0.08,0.14, 0.23,0.03,0.11,试设计Huffman编码。 解一:先构造Huffman树,再进行编码。 Huffman编码实现过程:以报文所用的不同字符为叶结点,以字符 出现频率为权重构造Huffman树;然后将树中结点指向其左孩子的 分支标“0”,指向其右孩子的分支标“1”;每个字符的编码即为 从根到每个叶子(字符)的路径上得到的0、1序列。这种对字符的 编码就是Huffman编码。
100
0 1
HC
42
0 1 0
58
1
0
1 2
0 1
1 0
1
0
3
1
1 1 0 0 0
1
1 1 0 1 1
1
1 0 1 1
0
1
23
0
19
1
29
1
29
1
11
0
8 5
14
0
15
1
4 5 6 7 8
1
3 Huffman树
7
8 Huffman编码
解二:利用Huffman编码算法实现。根据题意,取8个字符的权分别为 (5,29,7,8,14,23,3,11),n=8,则m=2*8-1=15,按上述 算法可构造一棵Huffman树,如下左图和右图分别Huffman树的初始 状态和终止状态。
a
b b d g e h i c ^ d c ^
f e ^ g
^ ^ ^

树和二叉树知识考点整理

树和二叉树知识考点整理

树和二叉树知识考点整理●树的基本概念●树的定义●n个结点的有限集●n=0代表空树●满足条件●只有一个根的结点●其余结点是互不相交的有限集,每个集合本身是一棵树,是根的子树●树是一种递归的数据结构●树的根结点没有前驱,其余结点只有一个前驱●树中所有结点可以有零个或多个后驱●基本术语●双亲、兄弟、孩子、祖先●度:孩子个数●分支结点:度大于0●叶子结点:度为0●深度:从下往上;●高度:从上往下;●有序树:从左到右是有次序的●路径和路径长度:路径是从上往下的●森林:m棵互不相交的树的集合。

●树的基本性质●结点数=所有结点度数之和+1●度为m的树中第i层上至多有m的i-1次分个结点●高度为h的m叉树至多有(m^h-1)/(m-1)个结点●具有n个结点的m叉树的最小高度为「logm(n(m-1)+1)]●二叉树的概念●定义●一种树形结构,特点是每个结点至多只有两棵子树(即二叉树中不存在度大于2的结点)并且二叉树的子树有左右之分,次序不可颠倒●二叉树与度为2的有序树区别●度为2的可以有三个结点,二叉树可以是空树●度为2的有序树的孩子左右之分是根据另一个孩子而言的;二叉树无论有没有,都要确定左右●特殊的二叉树●满二叉树●树中每一层都含有最多的结点●完全二叉树●高度为h,有n个结点的二叉树,当且仅当,每个结点都与高度为h的满二叉树中的编号一一对应●二叉排序树●用途:可用于元素的排序、搜索●左子树上所有结点的关键字均小于根结点的关键字;右子树上所有结点的关键字均大于根结点的关键字;左子树和右子树又是一棵二叉排序树●二叉树的性质●非空二叉树上的叶子结点数等于度为2的结点树加1,即n0=n2+1●非空二叉树上第k层至多有2^(k-1)个结点●高度为h的二叉树至多有2^h-1个结点●具有n个结点的完全二叉树的高度为log2(n+1)取顶或者log2n取底+1●二叉树的存储结构●顺序存储结构●只适合存储完全二叉树,数组从0开始●链式存储结构●顺序存储的空间利用率太低●至少三个指针域:数据域、左指针域、右指针域●增加了指向父结点后,变为三叉链表的存储结构●在含有n个结点的二叉链表中,含有n+1个空链域●二叉树的遍历和线索二叉树●二叉树的遍历●先序遍历●根左右●应用:求树的深度●中序遍历●左根右●后序遍历●左右根●应用:求根到某结点的路径、求两个结点的最近公共祖先等●三个遍历时间复杂度都是O(n)●递归算法和非递归算法的转换●层次遍历●需要借助队列●步骤●二叉树根结点入队,然后出队,访问出队结点,若有左子树,左子树根结点入队●遍历右子树,有右子树,右子树根结点入队。

树和二叉树习题及答案

树和二叉树习题及答案

一、填空题1. 不相交的树的聚集称之为森林。

2. 从概念上讲,树与二叉树是两种不同的数据结构,将树转化为二叉树的基本目的是_树可采用孩子-兄弟链表(二叉链表)做存储结构,目的是利用二叉树的已有算法解决树的有关问题。

3. 深度为k的完全二叉树至少有2 k-1个结点。

至多有2 k-1个结点,若按自上而下,从左到右次序给结点编号(从1开始),则编号最小的叶子结点的编号是2 k-2+1。

4. 在一棵二叉树中,度为零的结点的个数为n,度为2的结点的个数为n2,则有n= n2+1。

5. 一棵二叉树的第i(i≥1)层最多有2 i-1个结点;一棵有n(n>0)个结点的满二叉树共有(n+1)/2个叶子和(n-1) /2个非终端结点。

6.现有按中序遍历二叉树的结果为abc,问有5种不同形态的二叉树可以得到这一遍历结果。

7. 哈夫曼树是带权路径最小的二叉树。

8. 前缀编码是指任一个字符的编码都不是另一个字符编码的前缀的一种编码方法,是设计不等长编码的前提。

9. 以给定的数据集合{4,5,6,7,10,12,18}为结点权值构造的Huffman树的加权路径长度是 165 。

10. 树被定义为连通而不具有回路的(无向)图。

11. 若一棵根树的每个结点最多只有两个孩子,且孩子又有左、右之分,次序不能颠倒,则称此根树为二叉树。

12. 高度为k,且有个结点的二叉树称为二叉树。

2k-1 满13. 带权路径长度最小的二叉树称为最优二叉树,它又被称为树。

Huffman14. 在一棵根树中,树根是为零的结点,而为零的结点是结点。

入度出度树叶15. Huffman树中,结点的带权路径长度是指由到之间的路径长度与结点权值的乘积。

结点树根16. 满二叉树是指高度为k,且有个结点的二叉树。

二叉树的每一层i上,最多有个结点。

2k-1 2i-1二、单选题1. 具有10个叶结点的二叉树中有 (B) 个度为2的结点。

(A)8 (B)9 (C)10 (D)112.对二叉树的结点从1开始进行连续编号,要求每个结点的编号大于其左右孩子的编号,同一结点的左右孩子中,其左孩子的编号小于其右孩子的编号,则可采用_(3)次序的遍历实现编号。

第六章-树和二叉树

第六章-树和二叉树


树 和 二 叉 树 13
1 2 3 A B C
4 5 6 7 0 D E F
8 0
9 10 0 G
¾ 二叉树顺序存储的算法描述
数 据 结 构
¾ 初始化二叉树

树 和 二 叉 树 14
#define Max_Size 100 typedef int TElemType; typedef TElemType SqBT[Max_Size+1]; void InitBT(SqBT bt){//设置空树 int i; for(i=1;i<=Max_Size;i++) bt[i]=0; }
数 据 结 构

树 和 二 叉 树 19
¾ 后序遍历顺序二叉树算法 void PostBT(SqBT bt,int i){ if(i>Max_Size||!bt[i]) return; PostBT(bt,2*i); PostBT(bt,2*i+1); printf("%3d ",bt[i]); }
数 据 结 构

树 和 二 叉 树 4
5. 孩子结点、双亲结点、兄弟结点、堂兄弟 结点、祖先结点、子孙结点…… 6. 结点的层次从根开始,根为第一层,根的 孩子为第二层;若某结点在第L层,则其 子树的根就在第L+1层。 7. 树的深度或高度:树中结点的最大层次。 8. 有序树:如果将树中结点的各子树看成是 从左至右有次序的;反之,则是无序树。 9. 森林:是m棵互不相交的树的集合。
数 据 结 构

树 和 二 叉 树 25
¾ 打印一维数组 void printSq(SqBT bt){ int i; printf("\nSeqArray:"); for(i=1;i<=Max_Size;i++) printf("%3d ",bt[i]); }

树和二叉树习题

树和二叉树习题

树和二叉树习题集团文件发布号:(9816-UATWW-MWUB-WUNN-INNUL-DQQTY-第6章 树和二叉树一、选择题1.算术表达式a+b*(c+d/e )转为后缀表达式后为( B )A .ab+cde/*B .abcde/+*+C .D .abcde*/++2. 设有一表示算术表达式的二叉树(见下图),它所表示的算术表达式是( C ) A. A*B+C/(D*E)+(F-G) B. (A*B+C)/(D*E)+(F-G)C. (A*B+C)/(D*E+(F-G ))D. A*B+C/D*E+F-G3. 设树T 的度为4,其中度为1,2,3和4的结点个数分别为4,2,1,1 则T 中的叶子数为( D )A .5B .6C .7D .84. 在下述结论中,正确的是( D )①只有一个结点的二叉树的度为0; ②二叉树的度为2; ③二叉树的左右子树可任意交换;④深度为K 的完全二叉树的结点个数小于或等于深度相同的满二叉树。

A .①②③B .②③④C .②④D .①④5. 设森林F 对应的二叉树为B ,它有m 个结点,B 的根为p,p 的右子树结点个数为n,森林F 中第一棵树的结点个数是( A )A .m-nB .m-n-1C .n+1D .条件不足,无法确定6.若一棵二叉树具有10个度为2的结点,5个度为1的结点,则度为0的结点个数是( B )A.9 B.11 C.15 D.不确定7.设森林F中有三棵树,第一,第二,第三棵树的结点个数分别为M1,M2和M3。

与森林F对应的二叉树根结点的右子树上的结点个数是( D )。

A.M1 B.M1+M2 C.M3 D.M2+M38.一棵完全二叉树上有1001个结点,其中叶子结点的个数是( E )A. 250 B. 500 C.254 D.505 E.以上答案都不对(501)9. 有关二叉树下列说法正确的是( B )A.二叉树的度为2 B.一棵二叉树的度可以小于2 C.二叉树中至少有一个结点的度为2 D.二叉树中任何一个结点的度都为210.二叉树的第I层上最多含有结点数为( c )A.2I B. 2I-1-1 C. 2I-1 D.2I -111. 一个具有1025个结点的二叉树的高h为( C )A.11 B.10 C.11至1025之间 D.10至1024之间12.一棵二叉树高度为h,所有结点的度或为0,或为2,则这棵二叉树最少有( B )结点A.2h B.2h-1 C.2h+1 D.h+113. 一棵树高为K的完全二叉树至少有( C )个结点A.2k–1 B. 2k-1–1 C. 2k-1 D. 2k 14.对二叉树的结点从1开始进行连续编号,要求每个结点的编号大于其左、右孩子的编号,同一结点的左右孩子中,其左孩子的编号小于其右孩子的编号,可采用( C )次序的遍历实现编号。

第6-10章 树和二叉树--答案

第6-10章  树和二叉树--答案

第6章树和二叉树一、基础知识题1.列出右图所示二叉树的叶结点、分支结点和每个结点的层次。

[解答]二叉树的叶结点有⑥、⑧、⑨。

分支结点有①、②、③、④、⑤、⑦。

结点①的层次为0;结点②、③的层次为1;结点④、⑤、⑥的层次为2;结点⑦、⑧的层次为3;结点⑨的层次为4。

2.使用(1)顺序表示和(2)二叉链表表示法,分别画出右图所示二叉树的存储表示。

[解答](1)顺序表示(2)二叉链表表示3.在结点个数为n(n>1)的各棵树中,高度最小的树的高度是多少?它有多少个叶结点?多少个分支结点?高度最大的树的高度是多少?它有多少个叶结点?多少个分支结点?[解答]结点个数为n时,高度最小的树的高度为1,有2层;它有n-1个叶结点,1个分支结点;高度最大的树的高度为n-1,有n层;它有1个叶结点,n-1个分支结点。

4.试分别画出具有3个结点的树和3个结点的二叉树的所有不同形态。

[解答]具有3个结点的树具有3个结点的二叉树5.如果一棵树有n1个度为1的结点,有n2个度为2的结点,…,n m个度为m的结点,试问有多少个度为0的结点?试推导之。

[解答]总结点数n=n0+n1+n2+…+n m总分支数e=n-1= n0+n1+n2+…+n m-1=m×n m+(m-1)×n m-1+…+2×n2+n1则有 n 0=∑=+-mi i n i 21))1((6.试分别找出满足以下条件的所有二叉树:(1) 二叉树的前序序列与中序序列相同; (2) 二叉树的中序序列与后序序列相同; (3) 二叉树的前序序列与后序序列相同。

[解答](1) 二叉树的前序序列与中序序列相同:空树或缺左子树的单支树;(2) 二叉树的中序序列与后序序列相同:空树或缺右子树的单支树; (3) 二叉树的前序序列与后序序列相同:空树或只有根结点的二叉树。

7.填空题(1)对于一棵具有n 个结点的树,该树中所有结点的度数之和为 n-1 。

树和二叉树作业

树和二叉树作业

树和二叉树作业(一)一、基础知识题1、已知一棵度为m的树中有n1个度为1的结点,n2个度为2的结点,……,n m个度为m的结点,问树中有多少个叶子结点?2、由四个结点a、b、c、d组成二叉树,共有多少种不同的结构?3、已知一棵具有n个结点的完全二叉树被顺序地存储于一维数组A中,试编写一个算法,打印出编号为i的结点的双亲和所有孩子。

4、写出对二叉树进行中序遍历的非递归算法。

5、已知一组元素为(46,25,78,62,12,37,70,29),画出按元素排列顺序输入生成的一棵二叉排序树。

6、已知一棵二叉排序树如下图所示,若从中依次删除72、12、49、28结点,试分别画出每删除一个结点后得到的二叉排序树。

7、有七个带权结点a、b、c、d、e、f、g,分别带权3、7、8、2、5、8、4,试以它们为叶子结点构造一棵哈夫曼树(请按照左子树根结点的权小于等于右子树根结点的权的次序构造)。

8、在一份电文中,共用到了五种字符:a、b、c、d、e,它们的出现频率依次为4、7、5、2、9,试画出对应的编码哈夫曼树(请按照左子树根结点的权小于等于右子树根结点的要的次序构造),求出每个字符的哈夫曼编码。

二、编程题1、二叉树的遍历问题【问题描述】输入一棵二叉树的先序和中序遍历序列,输出其后序遍历序列。

输入:输入文件为tree.in,共两行,第一行一个字符串,表示树的先序遍历;第二行一个字符串,表示树的中序遍历。

树的结点一律用小写字母表示。

输出:输出文件为tree.out,仅一行,表示树的后序遍历序列。

【样例输入】abdecdbeac【样例输出】debca2、假定一棵树采用标准形式存储,试写出以广义表形式输出树的算法。

3、假定树采用标准形式存储,试写出求其深度的算法。

4、FBI树(fbi.pas)【问题描述】我们可以把由“0”和“1”组成的字符串分为三类:全“0”串称为B串,全“1”串称为I串,既含“0”又含“1”的串则称为F串。

数据结构树和二叉树习题及答案

数据结构树和二叉树习题及答案

数据结构树和二叉树习题及答案集团标准化工作小组 #Q8QGGQT-GX8G08Q8-GNQGJ8-MHHGN#习题六树和二叉树一、单项选择题1.以下说法错误的是 ( )A.树形结构的特点是一个结点可以有多个直接前趋B.线性结构中的一个结点至多只有一个直接后继C.树形结构可以表达(组织)更复杂的数据D.树(及一切树形结构)是一种"分支层次"结构E.任何只含一个结点的集合是一棵树2.下列说法中正确的是 ( )A.任何一棵二叉树中至少有一个结点的度为2B.任何一棵二叉树中每个结点的度都为2C.任何一棵二叉树中的度肯定等于2D.任何一棵二叉树中的度可以小于23.讨论树、森林和二叉树的关系,目的是为了()A.借助二叉树上的运算方法去实现对树的一些运算B.将树、森林按二叉树的存储方式进行存储C.将树、森林转换成二叉树D.体现一种技巧,没有什么实际意义4.树最适合用来表示 ( )A.有序数据元素 B.无序数据元素C.元素之间具有分支层次关系的数据 D.元素之间无联系的数据5.若一棵二叉树具有10个度为2的结点,5个度为1的结点,则度为0的结点个数是()A.9 B.11 C.15 D.不确定6.设森林F中有三棵树,第一,第二,第三棵树的结点个数分别为M1,M2和M3。

与森林F对应的二叉树根结点的右子树上的结点个数是()。

A.M1 B.M1+M2 C.M3 D.M2+M37.一棵完全二叉树上有1001个结点,其中叶子结点的个数是()A. 250 B. 500 C.254 D.505 E.以上答案都不对8. 设给定权值总数有n 个,其哈夫曼树的结点总数为( )A.不确定 B.2n C.2n+1 D.2n-19.二叉树的第I层上最多含有结点数为()A.2I B. 2I-1-1 C. 2I-1 D.2I -110.一棵二叉树高度为h,所有结点的度或为0,或为2,则这棵二叉树最少有( )结点A.2h B.2h-1 C.2h+1 D.h+111. 利用二叉链表存储树,则根结点的右指针是()。

树、二叉树、满二叉树、完全二叉树概念分清

树、二叉树、满二叉树、完全二叉树概念分清

树、⼆叉树、满⼆叉树、完全⼆叉树概念分清⾃由树⾃由树是⼀个连通的,⽆回路的⽆向图。

令G=(V,E)为⼀个⽆向图。

下⾯的表述是等价的。

1) G是⾃由树。

2) G中任意两个顶点由唯⼀⼀条简单路径得到。

3) G是连通的,但从E中去掉任何边后得到的图都是⾮连通的。

4) G是⽆回路的,且|E|=|V|-1。

5) G是连通的,且|E|=|V|-1。

6) G是⽆回路的,但添加任何边到E中得到的图包含回路。

⼆叉树在计算机科学中,⼆叉树是每个节点最多有两个⼦树的树结构。

通常⼦树被称作“左⼦树”(left subtree)和“右⼦树”(right subtree)。

⼆叉树的每个结点⾄多只有⼆棵⼦树(不存在度⼤于2的结点),⼆叉树的⼦树有左右之分,次序不能颠倒。

⼆叉树的第i层⾄多有2^(i-1)个结点;深度为k的⼆叉树⾄多有2^k-1个结点;(等⽐数列1+2+4+…+2^(k-1) = 2^k-1)。

对任何⼀棵⼆叉树T,如果其终端结点数为n0,度为2的结点数为n2,则n0 = n2 + 1。

树和⼆叉树的三个主要差别:1) 树的结点个数⾄少为1,⽽⼆叉树的结点个数可以为0;2) 树中结点的最⼤度数没有限制,⽽⼆叉树结点的最⼤度数为2;3) 树的结点⽆左、右之分,⽽⼆叉树的结点有左、右之分。

满⼆叉树⼀棵深度为k,且有2^k-1个节点的树是满⼆叉树。

另⼀种定义:除了叶结点外每⼀个结点都有左右⼦叶且叶⼦结点都处在最底层的⼆叉树。

这两种定义是等价的。

从树的外形来看,满⼆叉树是严格三⾓形的,⼤家记住下⾯的图,它就是满⼆叉树的标准形态:所有内部节点都有两个⼦节点,最底⼀层是叶⼦节点。

性质:1) 如果⼀颗树深度为h,最⼤层数为k,且深度与最⼤层数相同,即k=h;2) 它的叶⼦数是: 2^(h-1)3) 第k层的结点数是: 2^(k-1)4) 总结点数是: 2^k-1 (2的k次⽅减⼀)5) 总节点数⼀定是奇数。

6) 树⾼:h=log2(n+1)。

软件技术--树与二叉树

软件技术--树与二叉树
(2)若*p结点只有左子树PL或者只有右子树PR, 此时只要令PL或PR直接成为其双亲结点*f的左子 树即可。显然,作此修改也不会破坏二叉排序树 的特性。
(3 ) 若*p结点的左子树和右子树均不为空。
五、哈夫曼树的应用
1、什么是哈夫曼树
假设有n个权值{w1,w2,…,wn},试构造一棵有n 个叶子结点的二叉树,每个叶子结点带权wi,则其中带 权路径长度WPL最小的二叉树称作最优二叉树或哈夫 曼树。
2、 树的基本术语
结点的度:一个结点拥有的子树数称为该结点的度。 叶子结点:度为0的结点称为叶子(Leaf)或终端结点。 非终端结点:度不为0的结点称为非终端结点或分支结点。除根结 点之外,分支结点也称为内部结点。
树的度:树内各结点的度的最大值称为树的度。 树中结点之间的关系:在描述结点之间的关系时,通常用家族关 系来形象的称呼结点之间的联系。结点的子树的根称为该结点的孩 子(Child),相应的,该结点称为孩子的双亲(Parents)或父结点。 同一个双亲的孩子之间称为兄弟(Sibling)。 结点的层次(Level):一棵树从根开始定义起,根为第一层,根的 孩子为第二层,…,依此类推。若某结点在第i层,则其子树的根就 在第i+1层。其双亲在同一层的结点互为堂兄弟。
(4) 性质4: 具有n个结点的完全二叉树的深度为log2n+1。
3、几种特殊的二叉树
• 满二叉树:深度为K,且存在2K-1个结点的二叉树。 • 完全二叉树:至多只有最下面两层上的结点度数可以小于
2,并且最下层结点都集中在该层最左边的位置。 • 平衡二叉树:或是一棵空树,或是具有下列性质的二叉树:
每次插入一个结点的递归算法
struct node {anytype data; struct node *lchild; struct node *rchild; } *root; void insnode(t,d) struct node *t; anytype d;

(山东科技大学)PTA数据结构答案与解析-

(山东科技大学)PTA数据结构答案与解析-
1. 2 2. 3 3. 4 4. 5 解析:模拟一遍即可 答案: C
2-6
若元素a、b、c、d、e、f依次进栈,允许进栈、退栈操作交替进行,但不允许连续三次进行退栈工作,则不可能 得到的出栈序列是? (2分)
1. b c a e f d 2. c b d a e f 3. d c e b f a 4. a f e d c b
B代表分支数,n代表总结点数,将上边式子联立,然后带入题目中数据,可得
答案: D
2-9
若一棵二叉树的前序遍历序列是{ 4, 2, 1, 3, 6, 5, 7 },中序遍历序列是{ 1, 2, 3, 4, 5, 6, 7 },则下列哪句是错的?(3 分)
1. 这是一棵完全二叉树 2. 所有的奇数都在叶子结点上 3. 这是一棵二叉搜索树 4. 2是5的父结点 解析:根据前序,中序遍历可以建出图来,然后根据图来判断即可
答案: C
2-4
设栈S和队列Q的初始状态均为空,元素a、b、c、d、e、f、g依次进入栈S。若每个元素出栈后立即进入队列Q, 且7个元素出队的顺序是b、d、c、f、e、a、g,则栈S的容量至少是: (2分)
1. 1 2. 2 3. 3 4. 4
解析: 模拟即可 答案: C
2-5
假设有5个整数以1、2、3、4、5的顺序被压入堆栈,且出栈顺序为3、5、4、2、1,那么为了获得这样的输出, 堆栈大小至少为: (2分)
1-3 若一个栈的输入序列为{1, 2, 3, 4, 5},则不可能得到{3, 4, 1, 2, 5}这样的出栈序列。 (2分) 解析:2一定先与1出栈的 答案: T
2.单选题
2-1 给定一个堆栈的入栈序列为{ 1, 2, ⋯, n },出栈序列为{ p1, p2, ⋯, pn }。如果p2=n,则存在多少种不同的出栈序 列?(2分)
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。


(树根结点的高度为1)
一、选择题
3.以下说法错误的是( )。

A.完全二叉树上结点之间的父子关系可由它们编号之间的关系来表达B.在三叉链表上,二叉树的求双亲操作很容易实现
C.在二叉链表上,求根以及求左、右孩子等操作很容易实现
D.在二叉链表上,求双亲操作的时间性能很好
4.以下说法错误的是( )。

A.一般在哈夫曼树中,权值越大的叶子离根结点越近
B.哈夫曼树中没有度数为1的分支结点
C.若初始森林中共有n棵二叉树,最终求得的哈夫曼树共有2n-1个结点D.若初始森林中共有n棵二叉树,
进行2n-1次合并后才能剩下一棵最终的哈夫曼树
5.深度为6的二叉树最多有( )个结点。

A.64 B.63 C.32 D.31
6.将含有41个结点的完全二叉树从根结点开始编号,根为1号,
后面按从上到下、从左到右的顺序对结点编号,
那么编号为21的双亲结点编号为( )。

A.10B.11 C.41 D.20
7.设深度为k的二叉树上只有度为0和度为2的结点,
则这类二叉树上所含结点总数最少( )个。

A.k+l B.2k C.2k-1D.2k+1
8.下列说法中正确的是( )。

A.任何一棵二叉树中至少有一个结点的度为2
B.任何一棵二叉树中每个结点的度都为2
C.任何一棵二叉树中的每个结点的度肯定等于2
D.任何一棵二叉树中的每个结点的度都可以小于2
9.一棵二叉树满足下列条件:对任意结点,若存在左、右子树,
则其值都小于它的左子树上所有结点的值,
而大于右子树上所有结点的值。

现采用( )遍历方式就可以得到这棵二叉树所有结点的递减序列。

A.前序B.中序C.后序D.层次
10.如图6-1所示的二叉树的中序遍历序列是( )。

A.abcdgef B.dfebagc C.dbaefcg D.defbagc
11.已知某二叉树的后序遍历序列是deacb,中序遍历序列是deabc,
它的前序遍历序列是( )。

A.acbed B.baedc C.dceab D.cedba
12.某二叉树的前序遍历的结点访问顺序是abdgcefh,
中序遍历的结点访问顺序是dgbaechf,
则其后序遍历的结点访问顺序是( )。

A.bdgcefha B.gdbecfha C.bdgechfa D.gdbehfca
13.在图6-2中的二叉树中,( c )不是完全二叉树。

14.树最适合用来表示( )。

A.有序数据元素B.无序数据元素
C.元素之间具有分支层次关系的数据
D.元素之间无联系的数据
15.哈夫曼树的带权路径长度是( )。

A.所有结点权值之和
B.所有叶结点带权路径长度之和
C.带权结点的值
D.除根以外所有结点权值之和
16.设有一棵22个结点的完全二叉树,
那么整棵二叉树有( )个度为0的结点。

A.6 B.7 C.8 D.11
17.已知完全二叉树有26个结点,则整棵二叉树有( )个度为1的结点。

A.0 B.1 C.2 D.13
18.已知如图6-3所示的哈夫曼树,那么电文CDAA的编码是( )。

A.B.C.D.
19.在n个结点的完全二叉树中,对任一结点i(1≤i≤n),
i的左孩子可能是( )。

A.i/2 B.2i+1 C.2i D.都不是
20.已给出图6-3所示的二叉树,
A,B,C,D的权值分别为7,5,2,4,
则该树的带权路径长度为( )。

A.46 B.36 C.35 D.都不是
21.下列叙述中正确的是( )。

A.二叉树是度为2的有序树
B.二叉树中结点只有一个孩子时无左右之分
C.二叉树中必有度为2的结点
D.二叉树中结点最多有两棵子树,并且有左右之分
22.图6-4所示的几种结构中属于树形结构的是( b)。

二、判断题(标红色的是错误的)
2.树和二叉树之间最主要的差别是:
二叉树的结点的子树要区分为左右子树,
即使在结点只有一棵子树的情况下
也要明确指出该子树是左子树还是右子树。

3.若有一个结点是某二叉树子树的中序遍历序列中的最后一个结点,则它必须是该子树的前序遍历序列中的最后一个结点。

4.二叉树具有两个子女的父结点,在中序遍历序列中,
它的后继结点最多只能有一个子女。

5.在二叉树中,具有一个子女的父结点,
在中序遍历中,它没有后继的子女结点。

6.已知二叉树的前序遍历和后序遍历序列不能惟一地确定这棵树。

三、填空题
1.树(及一切树形结构)是一种_分支层次_____结构。

在树中,
____根_____结点没有直接前驱。

对树上任一结点x来说,
x是它的任一子树的根结点惟一的___双亲_____。

2.一棵树上的任何结点(不包括根本身)称为根的___子孙_______。

若B是A的子孙,则称A是B的_____祖先_____。

3.二叉树第i(i>0)层上至多有___2i-1_______个结点。

4.深度为k(k>0)的二叉树至多有_____2k-1_____个结点。

5.对任何二叉树,若度为2的节点数为n2,则叶子数n0=__n2+1________。

6.满二叉树上各层的节点数已达到了二叉树可以容纳的___最大值______。

满二叉树也是___完全_______二叉树,但反之不然。

7.具有n个结点的完全二叉树的深度为___log2n 取整+1_______。

8.二叉树通常有______顺序_______存储结构
和____链式______存储结构两类存储结构。

9.每个二叉链表还必须有一个指向_根_______结点的指针,
该指针具有标识二叉链表的作用。

10.对二叉链表的访问只能从_____根______指针开始。

11.二叉树有不同的链式存储结构,其中最常用的是___二叉链表_______
与_三叉链表_________。

12.具有100个结点的完全二叉树的深度是__7_________。

13.在_____先序_____遍历二叉树的序列中,任何结点的子树上的
所有结点都是直接跟在该结点之后。

14.若一棵二叉树的叶子数为n,
则该二叉树中左、右子树皆非空的结点个数为___n-1_______。

15.一棵树的形状如图6-5所示,
它的根结点是__A_______,叶结点是__E,J,K,G,L,O,P,Q,R,N,I________,结点H的度是___3______,这棵树的度是___4_____,
这棵树的深度是___5______,结点F的儿子结点是___J,K____,
结点G的父结点是___C______。

18.含有2n个结点的二叉树高度至少是_n+1__________,
至多是__2n _______(仅含根结点的二叉树高度为1)。

四、应用题
1.分别写出图6-7所示二叉树的前序、中序和后序序列。

答:前序:ABCDEF、中序:CBEFDA和后序:CFEDBA
2.已知一棵二叉树的中序序列和后序序列分别为BDCEAFHG和DECBHGFA,试画出这棵二叉树,并写出其前序遍历序列。

答:前序遍历序列:ABCDEFGH
3.设某密码电文由8个字母组成,a,b,c,d,e,f,g,h
每个字母在电文中的出现频率分别是
7,19,2,6,32,3,21,10,
试为这8个字母设计相应的哈夫曼编码。

答:略.
8.对于一个关键字序列10, 18, 3, 8, 12, 2, 7, 3,生成一个二叉排序树,并写出中序遍历该二叉排序树的结果。

答:略.。

相关文档
最新文档