数据结构(本)课程作业
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据结构(本)课程作业
作业3
(本部分作业覆盖教材第6-7章的内容)
一、单项选择题
1.假定一棵二叉树中,双分支结点数为15,单分支结点数为30,则叶子结点数为()。
A.15 B.16 C.17 D.47 2.二叉树第k层上最多有()个结点。
A.2k B.2k-1
C.2k-1 D.2k-1
3.二叉树的深度为k,则二叉树最多有()个结点。
A.2k B.2k-1
C.2k-1 D.2k-1
4. 设某一二叉树先序遍历为abdec,中序遍历为dbeac,则该二叉树后序遍历的顺序是()。
A.abdec B.debac C.debca D.abedc
5.树最适合于用来表示()。
A.线性结构的数据
B.顺序结构的数据
C.元素之间无前驱和后继关系的数据
D.元素之间有包含和层次关系的数据
6.设a,b为一棵二叉树的两个结点,在后续遍历中,a在b前的条件是()。
A.a在b上方 B.a在b下方
C.a在b左方 D.a在b右方
7.权值为{1,2,6,8}的四个结点构成的哈夫曼树的带权路径长度是()。
A.18 B.28 C.19 D.29
8.将含有150个结点的完全二叉树从根这一层开始,每一层从左到右依次对结点进行编号,根结点的编号为1,则编号为69的结点的双亲结点的编号为()。
A.33 B.34 C.35 D.36
9.如果将给定的一组数据作为叶子数值,所构造出的二叉树的带权路径长度最小,则该树称为()。
A.哈夫曼树 B.平衡二叉树
C.二叉树 D.完全二叉树
10.下列有关二叉树的说法正确的是()。
A.二叉树中度为0的结点的个数等于度为2的结点的个数加1
B.二叉树中结点个数必大于0
C.完全二叉树中,任何一个结点的度,或者为0或者为2
D.二叉树的度是2
11.在一棵度为3的树中,度为3的结点个数为2,度为2的结点个数为1,则度为0的结点个数为()。
A.4 B.5 C.6 D.7
12.在一棵度具有5层的满二叉树中结点总数为()。
A.31 B.32 C.33 D.16
13. 利用n个值作为叶结点的权生成的哈夫曼树中共包含有( )个结点。
A. n
B. n+1
C. 2*n
D. 2*n-1
14. 利用n个值作为叶结点的权生成的哈夫曼树中共包含有( )个双支结点。
A. n
B. n-1
C. n+1
D. 2*n-1
15. 利用3、6、8、12这四个值作为叶子结点的权,生成一棵哈夫曼树,该树中所有叶子的最长带权路径长度为( )。
A. 18
B. 16
C. 12
D. 30
16.在一棵树中,()没有前驱结点。
A.分支结点 B.叶结点 C.树根结点 D.空结点
17.在一棵二叉树中,若编号为i的结点存在右孩子,则右孩子的顺序编号为()。
A.2i B.2i-1 D.2i+1 C.2i+2
18.设一棵哈夫曼树共有n个叶结点,则该树有()个非叶结点。
A.n B.n-1 C.n+1 D.2n
19.设一棵有n个叶结点的二叉树,除叶结点外每个结点度数都为2,则该树共有()个结点。
A.2n B.2n-1 C.2n+1 D.2n+2 20.一棵完全二叉树共有5层,且第5层上有六个结点,该树共有()个结点。
A.20 B.21 C.23 D.30
21.在一个图G中,所有顶点的度数之和等于所有边数之和的()倍。
A.1/2 B.1 C.2 D.4
22.在一个有像图中,所有顶点的入度之和等于所有顶点的出度之和的()倍。
A.邻接矩阵表示法 B.邻接表表示法
C.逆邻接表表示法 D.邻接表和逆邻接表
23.在图的存储结构表示中,表示形式唯一的是()。
A.n B.n+1 C.n-1 D.n/2
24.一个具有n个顶点的无向完全图包含()条边。
A.n(n-1) B.n(n+1) C. n(n-1)/2 D. n(n+1)/2
25.一个具有n个顶点的有向完全图包含()条边。
A.n(n-1) B.n(n+1) C. n(n-1)/2 D. n(n+1)/2
26.对于具有n个顶点的图,若采用邻接矩阵表示,则该矩阵的大小为()。
A.n B.n2 C.n-1 D.(n-1)2
27.对于一个具有n个顶点和e条边的无向图,若采用邻接表表示,则表头向量的大小为()。
A.n B.e C.2n D.2e
28.对于一个具有n个顶点和e条边的无向图,若采用邻接表表示,则所有顶点邻接表中的结点总数为()。
A.n B.e C.2n D.2e
29.在有向图的邻接表中,每个顶点邻接表链接着该顶点所有()邻接点。
A.入边 B.出边
C.入边和出边 D.不是入边也不是出边30.在有向图的逆邻接表中,每个顶点邻接表链接着该顶点所有()邻接点。
A.入边 B.出边
C.入边和出边 D.不是入边也不是出边31.邻接表是图的一种()。
A.顺序存储结构 B.链式存储结构
C.索引存储结构 D.散列存储结构
32.如果从无向图的任一顶点出发进行一次深度优先搜索即可访问所有顶点,则该图一定是()。
A.完全图 B.连通图 C.有回路 D.一棵树
33.下列有关图遍历的说法不正确的是()。
A.连通图的深度优先搜索是一个递归过程
B.图的广度优先搜索中邻接点的寻找具有“先进先出”的特征
C.非连通图不能用深度优先搜索法
D.图的遍历要求每一顶点仅被访问一次
34.无向图的邻接矩阵是一个()。
A.对称矩阵 B.零矩阵 C.上三角矩阵 D.对角矩阵35.图的深度优先遍历算法类似于二叉树的()遍历。
A.先序 B.中序 C.后序 D.层次
36.已知下图所示的一个图,若从顶点V1出发,按深度优先搜索法进行遍历,则可能得到的一种顶点序列为()。
A.V1V2V4V8V3V5V6V7 B.V1V2V4V5V8V3V6V7
C.V1V2V4V8V5V3V6V7 D.V1V3V6V7V2V4V5V8
二、填空题
1.结点的度是指结点所拥有的。
2.树的度是指。
3.度大于0的结点称作或。
4.度等于0的结点称作或。
5.在一棵树中,每个结点的或者说每个结点的称为该结点的,简称为孩子。
6.一个结点称为其后继结点的。
7.具有的结点互称为兄弟结点,简称为兄弟。
8.每个结点的所有子树中的结点被称为该结点的。
9.从根结点到该结点所经分支上的所有结点称为该结点的。
10.树的深度或高度是指。
11.m(m 0)棵互不相交的树的集合称为。
12.度为k的树中的第i层上最多有结点。
13.深度为k的二叉树最多有结点。
14.在一棵二叉树中,如果树中的每一层都是满的,则称此树为;但如果出最后一层外,其余层都是满的,并且最后一层是满的,或者是在缺少若干连续个结点,则称此二叉树为。
15.具有n个结点的完全二叉树的深度是。
16.先序遍历二叉树的的操作定义为;若二叉树为空,则为空操作,否则进行如下操作,访问二叉树的;先序遍历二叉树的,先序遍历二叉树的。
17.中序遍历二叉树的的操作定义为;若二叉树为空,则为空操作,否则进行如下操作,中序遍历二叉树的;访问而叉树的,中序遍历二叉树的。
18.后序遍历二叉树的的操作定义为;若二叉树为空,则为空操作,否则进行如下操作,后序遍历二叉树的;后序遍历二叉树的,访问而叉树的。
19.将树中结点赋上一个有着某种意义的实数,称此实数为该结点的。
20.树的带权路径长度为树中所有叶子结点的。
21.哈夫曼树又称为,它是n个带权叶子结点构成的所有二叉树中带权路径长度WPL 。
22.若以4,5,6,7,8作为叶子结点的权值构造哈夫曼树,则其带权路径长度是。
23.具有m个叶子结点的哈夫曼树共有结点。
24.在图中,任何两个数据元素之间都可能存在关系,因此图的数据元素之间是一种的关系。
25.图的邻接矩阵表示法是用一个来表示图中顶点之间的相邻关系。
26.邻接表是图中的每个顶点建立一个邻接关系的。
27.图的遍历是从图的某一顶点出发,按照一定的搜索方法对图中各做访问的过程。
28.图的深度优先搜索遍历类似于树的遍历。
29.图的广度优先搜索类似于树的遍历。
30.具有n个顶点的有向图的邻接矩阵,其元素个数为。
30.具有n个顶点的无向图至少有条边,才能确保其为一个连通图。
31.图常用的两种存储结构是和。
32.一个AOV网(顶点活动图)应该是一个。
即不应该带有回路,否则回路上的所有活动都。
33.用邻接矩阵存储有向图G,其第i行的所有元素之和等于顶点i的。
34.在有n个顶点的有向图中,每个顶点的度最大可达。
35.在一个带权图中,两顶点之间的最段路径最多经过条边。
36.为了实现图的深度优先搜索遍历,其非递归的算法中需要使用的一个辅助数据结构为。
三、综合题
1
2.已知某二叉树的先序遍历结果是:A,B,D,G,C,E,H,L,I,K,M,F和J,它的中序遍历结果是:G,D,B,A,L,H,E,K,I,M,C,F和J,请画出这棵二叉树,并写出该二叉树后续遍历的结果。
3.已知一棵完全二叉树共有892个结点,求
⑴树的高度
⑵叶子结点数
⑶单支结点数
⑷最后一个非终端结点的序号
4.给出满足下列条件的所有二叉树。
(1)先序和中序相同
(2)中序和后序相同
(3)先序和后序相同
5.假设通信用的报文由9个字母A、B、C、D、E、F、G、H和I组成,它们出现的频率分别是:10、20、5、15、8、2、3、7和30。
请请用这9个字母出现的频率作为权值求:(1)设计一棵哈夫曼树;
(2)计算其带权路径长度WPL;
(3)写出每个字符的哈夫曼编码。
6.请根据以下带权有向图G
(1)给出从结点v1出发分别按深度优先搜索遍历G和广度优先搜索遍历G所得的结点序列;
(2)给出G的一个拓扑序列;
(3)给出从结点v1到结点v8的最短路径。
7.已知无向图G描述如下:
G=(V,E)
V={V1,V2,V3,V4,V5}
E={(V1,V2),(V1,V4),(V2,V4),(V3,V4),(V2,V5),(V3,V4),(V3,V5)}
(1)画出G的图示;
(2)然后给出G的邻接矩阵和邻接表;
(3)写出每个顶点的度。
8.回答下列问题:
⑴对于存储结构采用邻接矩阵的无向图,如何判断下列有关问题?
①图中有多少条边?
②任意两顶点间是否有边相连?
③任意一个顶点的度是多少?
⑵对于存储结构采用邻接表的有向图,如何判断下列有关问题?
①图中有多少条边?
②图中是否存在从V i到V j的边?
③如何求顶点V i的入度和出度?
四、程序填空题
1. 下面函数的功能是返回二叉树BT中值为X的结点所在的层号,请在划有横线的地方填写合适内容。
int NodeLevel(struct BinTreeNode* BT, char X)
{
if(BT==NULL) return 0; /*空树的层号为0*/
else if(BT->data==X) return 1; /*根结点的层号为1*/
/*向子树中查找X结点*/
else {
int c1=NodeLevel(BT->left,X);
if(c1>=1) ___(1)___________;
int c2=______(2)________ __;
if ___(3)__________________;
//若树中不存在X结点则返回0
else return 0;
}
}
2. 下面函数的功能是按照图的深度优先搜索遍历的方法,输出得到该图的生成树中的各条边,请在划有横线的地方填写合适内容。
void dfstree(adjmatrix GA, int i, int n)
{
int j;
visited[i]=1;
(1)
if(GA[i][j]!=0 && GA[i][j]!=MaxValue && !visited[j])
{
printf("(%d,%d)%d,",i,j,GA[i][j]);
(2)
}
}
五、算法设计题
1.写一个将一棵二叉树复制给另一棵二叉树的算法。
2.根据下面函数声明编写出求一棵二叉树中叶子结点总数的算法,该总数值由函数返回。
假定参数BT初始指向二叉树的根结点。
int BTreeLeafCount(struct BTreeNode* BT);
3.已知有n个顶点的有向图邻接表,设计算法分别实现下列功能:(1)求出图G中每个顶点的出度、入度。
(2)计算图中度为0的顶点数。
六、完成:实验3――栈、队列、递归程序设计
实验4——图的存储方式和应用
根据实验要求(见教材P203)认真完成本实验,并提交实验报告。