习题答案分析.docx
《习题答案分析.docx》由会员分享,可在线阅读,更多相关《习题答案分析.docx(14页珍藏版)》请在冰豆网上搜索。
习题答案分析
1已知一算术表达式的中缀形式为A+B*C-D/E,后缀形式为ABC*+DE/-,其前缀形式为
)°
A.-A+B*C/DEB.-A+B*CD/EC.-+*ABC/DED.-+A*BC/DE
参考答案:
D
3.—棵完全二叉树上有1001个结点,其中叶子结点的个数是()。
A.250B.500C.254D.505E.以上答案都不对
参考答案:
E
&在一棵三元树中度为3的结点数为2个,度为2的结点数为1个,度为1的结点数为2个,则度为0的结点数为()个。
A.4B.5C.6D.7
参考答案:
C
10.具有10个叶结点的二叉树中有()个度为2的结点。
A.8B.9C.10D.11
参考答案:
B
53.由3个结点可以构造出(
)种不同的二叉树。
A.2B.3C.4
D.5
参考答案:
D
47.引入二叉线索树的目的是(
)。
A.加快查找结点的前驱或后继的速度B.为了能在二叉树中方便的进行插入与删
除
C.为了能方便的找到双亲D.使二叉树的遍历结果唯一
19.将如下由三棵树组成的森林转换为二叉树。
反过来,将一个二叉树转化成森林或树?
(注意:
转化成森林的结果和转化成树的结果不一
样)
21.设某二叉树的前序遍历序列为ABCDEFGGI,中序遍历序列为BCAEDGHFI,试画出该
二叉树。
参考答案:
27.设二叉树T的存储结构如下:
12345678910
Lchild
0
0
2
3
7
5
8
0
10
1
Data
J
H
F
D
B
A
C
E
G
I
Rchild
0
0
0
9
4
0
0
0
0
0
其中Lchild、Rchild分别为结点的左、右孩子指针域,Data为结点的数据域,若根指针
的值为6,试:
(1)画出二叉树的逻辑结构;
(2)写出按前序、中序、后序遍历该二叉树所得到的结点序列;(3)画出二叉树的后序线索树。
参考答案:
后序序列:
ECHFJIGDBA
31•假定用于通讯的电文仅有8个字母C1,C2,…,C8组成,各个字母在电文中出现的频
率分别为5,25,3,6,10,11,36,4,试为这8个字母设计哈夫曼编码树。
参考答案:
c8cl
各字母编码如下:
c1:
0110c2:
10c3:
0010c4:
0111c5:
000c6:
010c7:
11c8:
0011
注意虽然哈夫曼树的带权路径长度是唯一的,但形态不唯一。
33.设T是一棵二叉树,除叶子结点外,其它结点的度皆为2,若T中有6个叶结点,试问:
(1)树T的最大深度和最小可能深度分别是多少?
⑵树T中共有多少非叶结点?
⑶若叶结点
的权值分别为1、2、3、4、5、6,请构造一棵哈曼夫树,并计算该哈曼夫树的带权路径长
度wpl。
参考答案:
(1)最大深度6,最小深度4;
⑵非叶结点数5;
⑶哈夫曼树见下图,其带权路径长度wpl=51。
34.一棵深度为H的满k叉树有如下性质:
第H层上的结点都是叶子结点,其余各层上每个结点都有k棵非空子树。
若按层次顺序从1开始对全部结点编号,问:
(1)第1层上有多少
个结点?
(2)编号为p的结点的第1个孩子结点(若存在)的编号是多少?
(3)编号为p的结
点的双亲结点(若存在)的编号是多少?
参考答案:
(1)ki4个
⑵(1+(p—1)U)+i
p+k-2i
(3)J(pF)】
-k一
2•给出算法将二叉树表示的表达式二叉树按中缀表达式输出,并加上相应的括号。
参考答案:
本题是将符号算术表达式用二叉树表示的逆问题,即将二叉树表示的表达式还原成原表达式。
二叉树的中序遍历序列与原算术表达式基本相同,差别仅在于二叉树表示中消除了括号。
将中序序列加上括号就恢复原貌。
当根结点运算符优先级高于左子树(或右子树)根结点运算符时,就需要加括号。
intPrecede(charoptr1,charoptr2)
//比较运算符级别高低,optr1级别高于optr2时返回1,相等时返回0,低于时返回-1{switch(optr1)
{case‘+':
case‘-':
if(optr2==‘+'||optr2==‘-')return(0);elsereturn(-1);case‘*':
case‘/':
if(optr1==‘*'||optr2==‘/')return(0);elsereturn
(1);}
}
voidInorderExp(BiTreebt)//输出二叉树表示的算术表达式,设二叉树的数据域是运算符或变量名{intbracket;
if(bt)
{if(bt->lchild!
=null){bracket=Precede(bt->data,bt->lchild->data)//比较双亲与左子女运算符优先级if(bracket==1)printf(‘(');
InorderExp(bt->lchild);//输出左子女表示的算术表达式if(bracket==1)printf(‘)');//加上右括号
}
printf(bt->data);//输出根结点
if(bt->rchild!
=null)//输出右子树表示的算术表达式
{bracket=Precede(bt->data,bt->rchild->data)
if(bracket==1)printf(“(”);//右子女级别低,加括号
InorderExp(bt->rchild);if(bracket==1)printf(“)”);
}}
}//结束InorderExp
4.有n个结点的完全二叉树存放在一维数组A[1..n]中,试据此建立一棵用二叉链表表示的
二叉树,根由tree指向。
参考答案:
方法一:
BiTreeCreat(ElemTypeA[],inti)
//n个结点的完全二叉树存于一维数组A中,本算法据此建立以二叉链表表示的完全二叉树
{BiTreetree;
if(i<=n){tree=(BiTree)malloc(sizeof(BiNode));tree->data=A[i];
if(2*i>n)tree->lchild=null;elsetree->lchild=Creat(A,2*i);
if(2*i+1>n)tree->rchild=null;elsetree->rchild=Creat(A,2*i+1);}return(tree);}//Creat
初始调用时i=1。
图的部分习题答案
5.n个结点的完全有向图含有边的数目()。
D.n*(n-1)
A.n*nB.n(n+1)C.n/2
参考答案:
D
有()个。
aebdfcacfdebaedfcbaefdcb
A.5个B.4个C.3个
参考答案:
D
21
已知有向图G=(V,E),其中
V={V1,V2,V3,V4,V5,V6,V7},
A.V1,V3,V4,V6,V2,V5,V7
C.V1,V3,V4,V5,V2,V6,V7
参考答案:
A
24.在有向图G的拓扑序列中,若顶点
A.G中有弧
C.G中没有弧
参考答案:
D
26.关键路径是事件结点网络中(A.从源点到汇点的最长路径C.最长回路
参考答案:
A
E={,,,,,,,,},G的拓扑序列是()o
B.V1,V3,V2,V6,V4,V5,V7
D.V1,V2,V5,V3,V4,V6,V7
Vi在顶点Vj之前,则下列情形不可能出现的是()o
B.G中有一条从Vi到Vj的路径
D.G中有一条从Vj到Vi的路径
))
B.从源点到汇点的最短路径
D.最短回路
37.设有无向网如下,写出其邻接矩阵,并在此基础上按普里姆算法求最小生成树。
closedge
closedge
a0
0
0
0
b1
0
4
1
0:
4
c2
0
3
2
0
0
d3
0
co
3
2
5
e4
0
8
4
0;
8
f5
0
CO
5
0
8
_g_6
0
CO
6
厂
CO
h7
0
CO
7
2:
5
closedge
closedge
a0
0
0
0
b1
0
0
1
o:
0
c2
0
0
2
0
0
y3
2
0
3
2
0
e4
3
7
4
3
7
f5
3
6
5
3
6
_g_6
3
5
6
■:
5
h7
3
4
7
3・
0
邻接矩阵:
0
0
1
0
0
2
0
0…
3
2
5
4
1
9
5
0
8
6
0
8
7
2
5
closedge
closedge
0
0
0
0
1
0
0
1
0
0
2
0
0
2
0
0
3
2
0
3
2
0
4
3
7
4
5
3
5
6
2
5
”6
0
6
3
Ci
6
3
0
7
3
0
7
3
0
closedge
冋
4
3
oO
oO
CO
oO
oO■
4
oO
5
5
9
OO
QO
QO
3
5
oO
5
oO
oO
QO
5
od
5
5
oO
7
6
5
4
□0
9
QO
7
QO
3
QO
QO
□0
oO
QO
6
3
QO
2
QO
□0
oO
OO
5
QO
2
oO
6
oO
5
4
oO
QO
6
cO
最小生成树:
38.试写出对如下有向无环图进行拓扌卜排序可能得到的所有拓扑序列。
参考答案:
每次输出一个入度为0的顶点°abcdefg、abcdfeg、abcfdeg。
39.设有向网如下,用弗洛伊德算法求图中各对顶点间的最短路径。
参考答案:
0123
0
5
CO
4
co
0
2
oo
•3
5"
0
co
2
8
6
0
D(o)
0
1
2
3
0
0
5
co
4
1
co
0
2
co
2
3
5
0
7
3
2
7
6
0
W
0
1
2
3
0
0
5
]7
4
1
5
0
2
9
2
3
5
0
7'
3
2
7
6
0
D⑴
0
1
2
3
0
0
5
4
1
8
0
2
co
2
3
5
0
7
3
2
7
6
0
0
1
2
3
0
0
5
7
4
1
5
0
2
g
2
3'
5
0
7
3
2
7
6
0
35.设有AOE网如下,试求关键路径。
300
vevleeel
1
0
1
0
1
0
1
0
2
3
2
3
2
0
2
0
3
6
3
6
3
"0
3
6
4
5
4
11
4
3
4
"3"
5
11
5
11
5
6
5
9
6
15
6
15
6
6
6
&
7
18
7
18
7
5
7
11
8
11
S
11
9
15
9
15
关键路径1:
Vi^V2^V5TV7
关键路径2:
Vi^V3TV6^V7
32.下图是带权的有向图G的邻接表表示法,求:
(1)以结点V1出发深度遍历图G所得的结点序列;
(2)以结点V1出发广度遍历图G所得的结点序列;
(3)从结点V1到结点V8的最短路径;
(4)从结点V1到结点V8的关键路径。
参考答案:
(1)V1,V2,V3,V8,V5,V7,V4,V6;
(2)V1,V2,V4,V6,V3,V5,V7,V8;
(3)V1到V8最短路径56,路径为V1----V2----V5----V7----V8;
(4)V1到V8的关键路径是V1----V6----V5----V3----V8,长97。
29.试利用Dijkstra算法求下图中从顶点a到其他个顶点间的最短路径,写出执行算法过程
中各步的状态。
参考答案:
顶点a到顶点b,c,d,e,f,g间的最短路径分别是15,2,11,10,6,13。
34.对图示的AOE网络,计算各活动弧的e(a)和l(ai)的函数值,各事件(顶点)的ve(Vj)
和vl(Vj)的函数值,列出各条关键路径。
(1)画出其邻接矩阵存储;
(2)写出图的所有强连通
7.有向图的邻接表存储如下,要求:
分量;(3)写出顶点a到顶点i的全部简单路径。
略。
(注:
邻接矩阵下标按字母升序强连通分量:
(a),(d),(h),
顶点a到顶点i的简单路径:
(a->b->e->i),(a->c->g->i),(a->c->b->e->i)。
数组
A.198B.195C.197D.196
参考答案:
B
25.有一个100*90的稀疏矩阵,非0元素有10个,设每个整型数占2字节,则用三元组表示该矩阵时,所需的字节数是()。
A.60B.66C.18000D.33
参考答案:
B
26.算术表达式a+b*(c+d/e)转为后缀表达式后为()。
A.ab+cde/*B.abcde/+*+C.abcde/*++D.abcde*/++
参考答案:
B