第二部分 树与二叉树自测题1
树和二叉树习题集与答案解析

一、填空题1. 不相交的树的聚集称之为森林。
2. 从概念上讲,树与二叉树是两种不同的数据结构,将树转化为二叉树的基本目的是_树可采用孩子-兄弟链表(二叉链表)做存储结构,目的是利用二叉树的已有算法解决树的有关问题。
3. 深度为k的完全二叉树至少有2 k-1个结点。
至多有2 k-1个结点,若按自上而下,从左到右次序给结点编号(从1开始),则编号最小的叶子结点的编号是2 k-2+1。
4. 在一棵二叉树中,度为零的结点的个数为n 0,度为2的结点的个数为n 2,则有n0= 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)次序的遍历实现编号。
树和二叉树-练习题

A. n1+n2+n3
B. n2+n3
C. n1+n2
D. n1+n3
2021/4/9
2
7.如果在树的孩子兄弟链存储结构中有6个空的左指针域, 7个空的右指针域,则该树中树叶的个数为( )
A.7个 B.6个 C.13个 D.不能确定
8.如果T1是由树T转换而来的二叉树,那么T中结点的后 根序列就是T1中结点的( ) 序列
A
B
C
D EH F
G
先序遍历序列:ABDEGCHF
2021/4/9
5
2.画出下列存储结构对应的二叉树,并将其转换成对应的 森林。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 ABD 0 CEH0 0 0 0 FG I
A
BDCE源自HFG IA
D
H
BC EG I
F
2021/4/9
6
3.画出以{1, 8, 2, 10, 12, 4,11}为权值的哈夫曼树(权值
5.已知二叉树的先序遍历序列为ADBECF,中序遍历序列 为 BDEACF , 则 这 棵 二 叉 树 的 后 序 遍 历 序 列 为 ( BEDFCA ) ,该树对应的森林包括( 3 )棵树。
2021/4/9
4
1.已知一棵二叉树的后序遍历序列为DGEBHFCA,中序 遍历序列为DBEGAHCF,画出该二叉树,并写出二叉 树的先序遍历序列。
大的为右子树),并求出该哈夫曼树的带权路径长度
WPL。
48
21
27
10 11
12 15
7
8
3
4
1
2
WPL=(1+2)*5+4*4+8*3+(10+11+12)*2
数据结构树和二叉树习题

数据结构树和二叉树习题一、树的基本概念1.请简要描述树的基本概念及其特点。
答:树是由n(n≥0)个节点组成的有限集合。
其中:-若n=0,则为空树。
-若n>0,则树有且仅有一个称为根的节点,其他节点可以分为多个互不相交的有限集合,每个集合本身又是一棵树,称之为根的子树。
树的特点包括:-每个节点存放的数据可以是同种或不同种的数据类型。
-每个节点最多有一个父节点和多个子节点。
2.请列举树的应用场景。
答:树的应用场景包括但不限于以下几个方面:-文件系统:操作系统中的文件系统通常使用树来组织文件和目录。
-数据库:数据库中的索引通常使用树来存储和组织数据。
-编译原理:编译器使用语法树来解析源代码。
-社交网络:社交网络中的关注和粉丝关系可以表示为树。
二、二叉树3.请定义二叉树。
答:二叉树是一种特殊的树结构,其中每个节点最多有两个子节点,分别称为左子节点和右子节点。
4.请画出以下二叉树的结构图:A/\BC/\/\DEFG答:以下是该二叉树的结构图:A/\BC/\/\DEFG5.请写出以下二叉树的前序遍历、中序遍历和后序遍历结果:/\23/\45答:-前序遍历结果:1,2,4,5,3-中序遍历结果:4,2,5,1,3-后序遍历结果:4,5,2,3,1三、二叉树的操作6.请实现二叉树的插入操作。
答:以下是二叉树的插入操作的示例代码:```class Node:def __init__(self, value):self.value = valueself.left = Noneself.right = Nonedef insert(root, value):if root is None:root = Node(value)else:if value < root.value:if root.left is None:root.left = Node(value)else:insert(root.left, value)else:if root.right is None:root.right = Node(value)else:insert(root.right, value)```7.请实现二叉树的查找操作。
数据结构:树和二叉树

C 唯一性不确定。
D 唯一性与原因的边的权数有关。
14、将递归算法转换成对应的非递归算法时,通常需要使用__________。 A栈 B 队列 C 链表 D树 15 、设二维数组 A[m][n], 每个数组元素占用 K 个存储单元 , 第一个数组元素的存储地址是 Loc(a[0][0]),求按行优先顺序存放的数组元素 a[i][j](0<=i<=m-1,0<=j<=n-1)的存储地址为______。 A,Loc(a[0][0]+[(i-1)*n+j-1]*k B,Loc(a[0][0])+[i*n+j]*k C,Loc(a[0][0])+[j*m+i]*k D,Loc(a[0][0])+[(j-1)*m+i-1]*k 16 、设二维数组 A[m][n], 每个数组元素占用 k 个存储单元 , 第一个数组元素的存储地址是 Loc(a[0][0]),求按列优先顺序存放的数组元素 a[i][j](0<=i<=m-1,0<=j<=n-1)的存储地址为______。 A,Loc(a[0][0])+[(i-1)*n+j-1]*k B,Loc(a[0][0])+[i*n+j]*k C,Loc(a[0][0])+[j*m+i]*k D,Loc(a[0][0])+[(j-1)*m+i-1]*k 17 、设二维数组 A[6][10], 每个数组元素占用 4 个存储单元 , 若按行优先顺序存放的数组元 素,a[0][0]的存储地址为 860,则 a[3][5]的存储地址是______。 A,1000 B,860 C,1140 D,1200 18、设二维数组 A[6][10],每个数组元素占用 4 个存储单元,若按行优先顺序存放的数组元素 a[3][5]的存储地址为 1000,则 a[0][0]的存储地址是______。 A,872 B,860 C,868 D,864 19、若将 n 阶上三角矩阵 A 按列优先顺序压缩存放在一维数组 B[1..n(n+1)/2]中,第一个非零 元素 a1,1 存于 B[0]中,则应存放到 B[k]中的非零元素 ai,j(1<=i<=n,1<=j<=i)的下标 i、j 与 k 的对 应关系是______。 A,i(i+1)/2+j B,i(i-1)/2+j-1 C,j(j+1)/2+i D,j(j-1)/2+i-1 20、若将 n 阶下三角矩阵 A 按列优先顺序压缩存放在一维数组 B[1..n(n+1)/2]中,第一个非零 元素 a1,1 存于 B[0]中,则应存放到 B[k]中的非零元素 ai,j(1<=i<=n,1<=j<=i)的下标 i、j 与 k 的对 应关系是______。 A,j(2n-j+1)/2+i-j B,(j-1)(2n-j+1)/2+i-j C,i(2n-i+1)/2+j-i D,i(2n-i+2)/2 A 便于进行矩阵运算 B 便于输入和输出 C 节省存储空间 度 22、稀疏矩阵压缩后,必会失去______功能。 A 顺序存储 B 随机存取 C 输入输出 D 以上都不对
树与二叉树习题解析(答)

习题五树与二叉树一、选择题1、一棵非空的二叉树的先序遍历序列与后序遍历序列正好相反,则该二叉树一定满足。
A、所有的结点均无左孩子B、所有的结点均无右孩子C、只有一个叶子结点D、是任意一棵二叉树2、一棵完全二叉树上有1001个结点,其中叶子结点的个数是。
A、250B、500C、254D、505E、以上答案都不对3、以下说法正确的是。
A、若一个树叶是某二叉树前序遍历序列中的最后一个结点,则它必是该子树后序遍历序列中的最后一个结点B、若一个树叶是某二叉树前序遍历序列中的最后一个结点,则它必是该子树中序遍历序列中的最后一个结点C、在二叉树中,具有两个子女的父结点,在中序遍历序列中,它的后继结点最多只能有一个子女结点D、在二叉树中,具有一个子女的父结点,在中序遍历序列中,它没有后继子女结点4、以下说法错误的是。
A、哈夫曼树是带权路径长度最短得数,路径上权值较大的结点离根较近B、若一个二叉树的树叶是某子树中序遍历序列中的第一个结点,则它必是该子树后序遍历序列中的第一个结点C、已知二叉树的前序遍历和后序遍历并不能唯一地确定这棵树,因为不知道树的根结点是哪一个D、在前序遍历二叉树的序列中,任何结点其子树的所有结点都是直接跟在该结点之后的5、一棵有124个叶结点的完全二叉树,最多有个结点。
A、247B、248C、249D、250E、2516、任何一棵二叉树的叶结点在前(先)序、中序和后序遍历序列中的相对次序。
A、不发生变化B、发生变化C、不能确定7、设a、b为一棵二叉树上的两个结点。
在中序遍历时,a在b前面的条件是。
A、a在b的右方B、a在b的左方C、a是b的祖先D、a是b的子孙8、设深度为k的二叉树上只有度为0和度为2的结点,则这类二叉树上所含的结点总数为。
A、不确定B、2kC、2k-1D、2k+19、设有13个值,用它们组成一棵哈夫曼树,则该哈夫曼树共有个结点。
A、13B、12C、26D、2510、下面几个符号串编码集合中,不是前缀编码的是。
树和二叉树习题及答案

树和二叉树习题及答案一、填空题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)次序的遍历实现编号。
树和二叉树习题

1.若在一棵非空树中,某结点A有3个兄弟结点(包括A自身),B是A的双亲结点,则B的度是()。
A. 2B. 3C. 4D. 52.有关二叉树下列说法正确的是()A.二叉树的度为2B.一棵二叉树的度可以小于2C.二叉树中至少有一个结点的度为2D.二叉树中任何一个结点的度都为23.将一棵有100个结点的完全二叉树从上到下,从左到右依次对结点进行编号,根结点的编号为1,则编号为49的结点的左孩子的编号为()。
A.98B.99C.50D.484.设高度为h的二叉树上只有度为0和度为2的结点,则此类二叉树中所包含的结点至少为()。
A.hB.2h-1C.2h+1D.h+15.假定在一棵二叉树中,双分支结点数为15个,单分支结点数为32个,则叶子结点数为。
A. 15B. 16C. 17D. 476.假定一棵二叉树的结点数为18个,则它的最小高度。
A. 4B. 5C. 6D. 187.在一棵二叉树中第五层上的结点数最多为。
A. 8B. 15C. 16D. 328.在一棵具有五层的满二叉树中,结点总数为。
A. 31B. 32C. 33D. 169.一个有31个结点的满二叉树,其深度有()。
A.5层B. 6层C. 7层D.8层10.一个具有767个结点的完全二叉树,其叶子结点个数为()。
A. 383B. 384C. 385D. 38611.设树T的度为4,其中度为1,2,3和4的结点个数分别为4,2,1,1 。
则T中的叶子数为()。
A.5 B.6 C.7 D.812.某二叉树中序序列为abcdefg,后序序列为bdcafge,则前序序列是()。
A. egfacdbB. eacbdgfC. eagcfbdD.上面的都不对13.设A、B为一棵二叉树上的两个结点。
在中序遍历时,A在B前面的条件是()。
A. A在B的右方B. A在B的左方C. A是B的祖先D. A是B的子孙14.在N个结点的线索二叉树中,线索的数目为()A.N-1B.NC.N+1D.2N15.引入二叉线索树的目的是()A.加快查找结点的前驱或后继的速度B.为了能在二叉树中方便的进行插入与删除C.为了能方便的找到双亲D.使二叉树的遍历结果惟一16.设森林F对应的二叉树为B,它有m个结点,B的根为p,p的右子树结点个数为n,森林F中第一棵树的结点个数是()A.m-n B.m-n-1 C.n+1 D.条件不足,无法确定17.在有n个叶子结点的哈夫曼树中,其分支结点(非叶子结点)的总数为( )。
第5章-树和二叉树-自测题

第5章树和二叉树自测题一、下面是有关二叉树的叙述,请判断正误(每小题1分,共10分)( X )1. 若二叉树用二叉链表作存贮结构,则在n个结点的二叉树链表中只有n—1个非空指针域。
( X )2.二叉树中每个结点的两棵子树的高度差等于1。
(√)3.二叉树中每个结点的两棵子树是有序的。
( X )4.二叉树中每个结点有两棵非空子树或有两棵空子树。
( X )5.二叉树中每个结点的关键字值大于其左非空子树(若存在的话)所有结点的关键字值,且小于其右非空子树(若存在的话)所有结点的关键字值。
( X )6.二叉树中所有结点个数是2k-1-1,其中k是树的深度。
( X )7.二叉树中所有结点,如果不存在非空左子树,则不存在非空右子树。
( X )8.对于一棵非空二叉树,它的根结点作为第一层,则它的第i层上最多能有2i-1个结点。
(√)9.用二叉链表法(link-rlink)存储包含n个结点的二叉树,结点的2n个指针区域中有n+1个为空指针。
(√)10. 具有12个结点的完全二叉树有5个度为2的结点。
二、填空(每空1分,共15分)1.由3个结点所构成的二叉树有 5 种形态。
2. 一棵深度为6的满二叉树有 31 个分支结点和 32 个叶子。
3.一棵具有257个结点的完全二叉树,它的深度为 9 。
4.设一棵完全二叉树有700个结点,则共有 350 个叶子结点。
5. 设一棵完全二叉树具有1000个结点,则此完全二叉树有 500 个叶子结点,有 499 个度为2的结点,有 1 个结点只有非空左子树,有 0 个结点只有非空右子树。
6.一棵含有n个结点的k叉树,可能达到的最大深度为 n ,最小深度为 logk(1-n+nk) 。
7. 二叉树的基本组成部分是:根(N)、左子树(L)和右子树(R)。
因而二叉树的遍历次序有六种。
最常用的是三种:前序法(即按N L R次序),后序法(即按 LRN 次序)和中序法(也称对称序法,即按L N R次序)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第二部分树与二叉树自测题
一、选择与填空(选择与填空,20分,每题1分)
1. 深度为5的二叉树至多有( B )个结点。
A.32 B.31 C.16 D.10
2. 某二叉树结点的中序序列为d,e,b,a,c,后序序列为d,a,b,e,c,则该二叉树结点的前序序列为 D 。
A. acbed
B. decab
C. deabc
D. cedba
3、一棵二叉树的结点数为18个,则它的最小高度为__B__。
A、4
B、5
C、6
D、18
4、在一棵度为4的树T中,若有20个度为4的结点,10个度为3的结点,1个度为2的结点,10个度为1的结点,则树T的叶子结点个数是(B)
A.41
B. 82
C. 113
D. 122
5.若一棵完全二叉树有768个结点,则该二叉树中叶子结点数是C
A. 257
B.258
C.384
D.385
6. 若一棵二叉树的前序遍历序列和后序遍历序列分别为1,2,3,4,和4,3,2,1,则该二叉树的中序遍历序列不会是C
A. 1,2,3,4
B. 2,3,4,1
C.3,2,4,1
D. 4,3,2,1
7已知一棵有2011个结点的树,其叶子结点个数为116,该树对应的二叉树中无右孩子的结点个数是D
A.115 B 116 C, 1895 D.1896
8 若一棵二叉树的前序遍历序列为a,e,b,d,c,后序遍历序列为b,c,d,e,a,则根结点的孩子结点A
A. 只有e
B.有e,b
C.有e.c
D.无法确定
9.若3叉树T有20个度为1的结点,15个度为2的结点,10个度为3的结点。
则该树有B 个叶子结点。
A.35 B. 36 C. 37 D. 34
10、若二叉树有20个叶子结点,30个结点仅有1个孩子,则该二叉树的总的结点数是(A )
A. 69
B.68
C. 67
D. 70
11、一个二叉树有102片叶子,则该二叉树中度为2的结点数是( A )
A. 101
B. 100
C. 102
D.103
12、对(n>=2)个权值均不相同的字符构成赫夫曼树。
关于该树的叙述中,错误的是(A)
A.该树一定是一颗完全二叉树
B.该树一定没有度为1的结点
C.该树中两个权值最小的结点一定是兄弟结点
D.树中的任意一非叶子结点的权值一定不小于下一任意结点的权值
13、已知一棵完全二叉树的第6层(设根为第1层)有8个叶结点,则完全二叉树的结点个数最多是( C )C
A.39 B.52 C.111 D.119
14、将森林转换为对应的二叉树,若在二叉树中,结点u是结点v的父结点的父结点,则在原来的森林中,u和v可能具有的关系是 I.父子关系 II.兄弟关系 III. u的父结点与v的父结点是兄弟关系 (D)正确C
A.只有II
B.I和II
C.I和III
D.I、II和III
15、按后根次序周游树(林)等同于按什么次序周游该树(林)对应的二叉树?C
A)前序 B)后序
C)中序(对称序) D)层次次序
16、对于给出的一组权w={10, 12, 16, 21, 30},通过霍夫曼算法求出的扩充二叉树的带权外部路径长度为C
A)89 B)189 C)200 D)300
17、具有12个结点的完全二叉树有 B
A 5个叶子
B 5个度为2的结点
C 7个分支结点
D 2个度为1的结点
18、有3个结点的所有二叉树有( C )种形态。
A. 3
B. 4
C.5
D.6
19.设森林F中有三棵树,第一,第二,第三棵树的结点个数分别为M1,M2和M3。
与森林F对应的二叉树根结点的右子树上的结点个数是(D )。
A.M1 B.M1+M2 C.M3 D.M2+M3
20.若X是后序线索二叉树中的叶结点,且X存在左兄弟结点Y,则X的右线索指向的是B 正确A
A. X的父结点
B. 以Y为根的子树的最左下结点
C. X的左兄弟结点Y
D. 以Y为根的子树的最右下结点
21.已知三叉树T中6个叶结点的权分别是2,3,4,5,6,7,T的带权(外部)路径长度最小是 A
A. 27
B. 46
C. 54
D. 56
22、下列二叉排序树中,满足平衡二叉树定义的是(B)
23、有关键码值为10, 20. 30的三个结点,按所有可能的插入顺序去构造二叉排序树。
能构造出多少棵不同的二叉排序树?暂时不做
A)4 B)5 C)6 D)7
24、下列线索二叉树中,符合后序线索树定义的是(C)
A.
C D.
二、填空题 (每空1分,共10分)
1.深度为k 的完全二叉树至少有( )个结点。
至多有( )个结点。
若按自上而下,从左到右的次序给每个结点编号(从1开始),则编号最小的叶子结点的编号是( )。
2.由如下图所示的二叉树,回答下列问题。
其中序遍历序列为( DGBAEHICFA )。
其前序遍历序列为( ABDGCEFIF )。
其后序遍历序列为( GDBIHEFCA )。
3. 一个完全二叉树的叶子结点数为n ,最后一层的结点数大于等于2,则该二叉树的深度为( )。
4、若树T 有a 个度为1的结点,b 个度为2的结点,c 个度为3的结点。
则该树有( )个叶子结点。
5、若二叉树有20个叶子结点,30个结点仅有1个孩子,则该二叉树的总的结点数是( ) NULL
6、一个二叉树有102片叶子,则该二叉树中度为2的结点数是( )
三、(20分)有七个带权结点,其权值分别是3、7、8、2、6、10、14,试以它们为叶子结点构造一棵哈夫曼树,并计算带权路径长度,如以数组存放哈夫曼树,试写出该数组的各元素值。
四、(共10分)已知一棵二叉树的中序序列为CBEDAHGIJF ,后序序列为 CEDBHJIGFA ,画出该二叉树的先序线索二叉树。
五、森林的遍历(10分)
试写出森林的先序遍历序列和中序遍历序列
六、编程题(30分)
二叉树的链接存储结构如下:
typedef struct BiTNode{
TElemType data;
Struct BiTNode *lchild , *rchild;
}BiTNode, *BiTree;
1. 设计一个算法计算一棵给定二叉树的结点数。
2. 编写一个按先序建立二叉树的递归算法
3. 编写层序遍历二叉树的算法
4. 编写求二叉树深度的递归算法
5. 设Hufman 树的根结点指针为ht ,结点的权值、左、右子树指针分别为
weight, lchild,rchild 。
试采用先序非递归遍历二叉树的方法,写出求Hufman 树的带权路径长度的C 语言描述算法Hwpl (ht )。