数据结构期末复习题.docx
- 文档编号:6514947
- 上传时间:2023-01-07
- 格式:DOCX
- 页数:27
- 大小:210.31KB
数据结构期末复习题.docx
《数据结构期末复习题.docx》由会员分享,可在线阅读,更多相关《数据结构期末复习题.docx(27页珍藏版)》请在冰豆网上搜索。
数据结构期末复习题
(1)若以1234作为双端队列的输入序列,则既不能由输入受限双端队列得到,也不能由输岀受限双端队列得到的输出序列是()。
A)1234B)4132C)4231D)4213
(2)将一个A[1..100,1..100]的三对角矩阵,按行优先存入一维数组B[298]中,
(假设B[0]的位置是1)
198
m的哈夫曼树中,其叶结点个数为
中的位置k为(
D)
(3)若度为
A)198
B)
A中元素a66,65在B数组
195C)197
A)n-1
B)—1
m
n,则非叶结点的个数为(
)。
(4)若一个有向图具有拓扑排序序列,并且顶点按拓扑排序序列编号,那么它的邻接矩阵必定为
。
A)对称矩阵B)稀疏矩阵
(5)设森林F对应的二叉树为有
点个数为()。
A)m-k+1B)k+1
(6)假定有K个关键字互为同义词,次探测。
A)K-1次
C)三角矩阵D)一般矩阵
m个结点,此二叉树根的左子树的结点个数为k,则另一棵子树的结
C)m-k-1D)m-k
若用线性探测法把这K个关键字存入散列表中,至少要进行(
(7)一棵深度为k的平衡二叉树,
A)2k-1-1
(8)如表r有100000个元素,前
A)直接插入排序B)
B)2k-1
C)K+1次
其每个非终端结点的平衡因子均为
C)2k-1+1D)
99999个元素递增有序,则采用(快速排序C)归并排序
D)K(K+1)/2次
0,则该树共有(
2k-1
)个结点。
)方法比较次数较少。
D)选择排序
(9)如果只考虑有序树的情形,那么具有7个结点的不同形态的树共有()棵。
A)132B)154C)429D)前面均不正确
(10)对n(n>=2)个权值均不相同的字符构成哈夫曼树,关于该树的叙述中,错误的是(
A)
B)
C)
D)
该树一定是一棵完全二叉树
树中一定没有度为1的结点
树中两个权值最小的结点一定是兄弟结点
树中任一非叶结点的权值一定不小于下一任一结点的权值
二、(本题8分)
斐波那契数列Fn定义如下:
Fo=0,F1=1,
请就此斐波那契数列,回答下列问题:
(1)在递归计算Fn的时候,需要对较小的Fn-1,Fn-2,…,F1,Fo精确计算多少次?
(2)若用有关大0表示法,试给岀递归计算Fn时递归函数的时间复杂度是多少?
三、(本题8分)
Fn=Fn-1+Fn-2
)。
证明:
如果一棵二叉树的后序序列是U—U2,…,un,中序序列是Up^Up,…,uPn,则由序列1,2,…,n可通
过一个栈得到序列P-P2,…,pn。
四、(本题8分)
如下图所示为5个乡镇之间的交通图,乡镇之间道路的长度如图中边上所注。
现在要在这5个乡镇中选
择一个乡镇建立一个消防站,问这个消防站应建在哪个乡镇,才能使离消防站最远的乡镇到消防站的路程最
短。
试回答解决上述问题应采用什么算法,并写岀应用该算法解答上述问题的每一步计算结果。
五、(本题8分)
证明一个深度为n的AVL树中的最少结点数为:
Nn=Fn+2-1(n>0)
其中,Fi为Fibonacci数列的第i项。
六、(本题8分)
简单回答有关AVL树的问题:
(北方名校经典试题)
(1)在有n个结点的AVL树中,为结点增加一个存放结点高度的数据成员,那么每一个结点需要增加多少个字位(bit)?
(2)若每一个结点中的高度计数器有8bit,那么这样的AVL树可以有多少层?
最少有多少个关键字?
七、(本题8分)
设有12个数据{25,40,33,47,12,66,72,87,94,22,5,58},它们存储在散列表中,利用线性探测再散列解决冲突,要求插入新数据的平均查找次数不超过3次。
(1)该散列表的大小m应设计多大?
(2)试为该散列表设计相应的散列函数。
(3)顺次将各个数据散列到表中。
(4)计算查找成功的平均查找次数。
八、(本题8分)
已知某电文中共岀现了10种不同的字母,每个字母岀现的频率分别为A:
8,B:
5,C:
3,D:
2,E:
7,F:
23,G:
9,H:
11,I:
2,J:
35,现在对这段电文用三进制进行编码(即码字由0,丨,2组成),问
电文编码总长度至少有多少位?
请画岀相应的图。
九、(本题9分)
已知一棵度为m的树中有N1个度为1的结点,N2个度为2的结点,…,Nm个度为m的结点。
试问该树中有多少个叶子结点?
(北方名校经典试题)
十、(本题15分)
试用递归法编写输出从n个数中挑选k个进行排列所得序列的算法。
模拟试题(七)参考答案
一、单项选择题(每小题2分,共20分)
(1)参考答案:
C)
(2)【分析】如下所示,三对角矩阵第1行和最后1行非零元素个数为2个,其余各行的非零元素个数是3个,所知&6,65前面共有2+3*64=194个非零元素,a36,65本身是第195个非零元。
参考答案:
C)
(4)【分析】设顶点按拓扑排序序列为:
vo,V1,…,w-1,则对于邻接矩阵A,只有当i
参考答案:
C)
(5)【分析】设另一棵子树的结点个数为n,所以有m=n+k+1,可知n=m-k-l。
参考答案:
C)
(6)【分析】因为K个关键字互为同义词,只有在存入第一个关键字的情况下不发生冲突,所以至少需进行1+2+…+K=K(K+1)/2次探测。
参考答案:
D)
(7)【分析】由于每个非终端结点的平衡因子均为0,所以每个非终端结点必有左右两个孩子,且左子
树的高度和右子树的高度相同,这样AVL树是满二叉树。
高度为k的满二叉树的结点数为2k-l。
参考答案:
D)
(8)【分析】本题中只有直接插入排序利用前面有序的子序列这个性质,如用直接插入排序对本题只需将最后一个元素插入到前面99999个元素的有序子序列中即可,显然比较次数较少。
参考答案:
A)
(9)【分析】具有n个结点有不同形态的树的数目和具有n-l个结点互不相似的二叉树的数目相同(将树转化为二叉树时,根结点右子树为空,所以除根结点而外只有左子树,其不相似的二叉树的等价于不相似
11
的左子树)。
具有n个结点互不相似的二又树的数目为C;n,本题中应为C誇132
n161
参考答案:
A)
(10)参考答案:
A)
二、(本题8分)
【解答】
(1)设在计算Fn时,由Fn-l+Fn-2可知Fn-1要精确计算1次;
由Fn-1=Fn-2+Fn-3可知Fn=2Fn-2+Fn-3,Fn-2要精确计算2次;
由Fn-2=Fn-3+Fn-4可知Fn=3Fn-3+2Fn-4,Fn-3要精确计算3次,Fn=3Fn-3+2Fn-4公式中Fn-3的系数为Fn-3要精确计算次数,而Fn-4的系数为Fn-2要精确计算次数,以此类推,设Fn-j的精确计算次为j则有:
Fn=aj*Fn-j+aj-1*Fn-j-1。
由Fn-j=Fn-j-1+Fn-j-2可知Fn=(aj+ai-1)*Fn-j-1+aj*Fn-j-2,Fn-j-1的精确计算次数为aj+1,所以有:
a+1=aj+aj-1
由于Fn-1要精确计算a1为1次,即a1=1,即可知Fn-1,Fn-2,…,F1,Fo的精确计算次为:
1,2,3,5,……,a=aj-1+ai-2
与斐波那契数列数列:
0,1,2,3,5,,Fn=Fn-1+Fn-2
比较可知aj=Fj+1。
(2)由于Fn的计算最终要转化为Fo与F1之和,其加法的计算次数为Fo与F1的精确计算次数之和再减
1之差,由于F0=Fn-n与F1=Fn-(n-1),所以计算Fn时,加法计算次数为:
an+an-1-1=Fn+1+Fn-1
由于Fn=1(「^)n1(^-^)n,可知时间复杂度为0((】-)n)。
诟27522
三、(本题8分)
【解答】当n=1时,结论显然成立。
设n<=k时结论成立,当n=k+1时,设一棵二叉树的后序序列是比,口2,…,u,中序序列是uP,uP,…,uP,
12nHp2pn
可知Un是二叉树的根结点,设Pjn,可知{Up「Up2,…,Up1}是左子树的结点集合,{Upj1,Upj2,-,Upn}是右子树的结点集合,进一步可知:
(〔)左子树的后序序列是U—U2,…,uj1,中序序列是Up1,Up2,…,UPj1,由归纳假设知序列1,2,…,j-1
可以通过一个栈得序列5,p2,…,pj1。
(2)右子树的后序序列是Uj,Uj1,…,
Un1,中序序列是upj1,up
j2「…,
UPn,设U1uj,U2uj1,…
Unj
Un1;up1uPj1,UP2UPj2,
',UPnjUPn,贝"P1
Pj1
j1,P2Pj2j1,…,
pnj
pnj1,由归纳假设知序列1,2,…
•,n-j可以通过一个栈得序列
P1,
p2,…,pnj,显然按同样的
方式,
j,j+1,…,n-1可以通过一个栈得序列j
1P1,j1P2,…,j1
Pnj
也就是Pj1,Pj2,…,Pn
由
(1)
(2)及pjn可知由1,2,…,n
可通过一个栈得到序列訪
P2厂
•,pn。
由数学归纳法可知本题结
论成立。
四、(本题8分)
【解答】
由弗洛伊德
(
Floyd)
算法进行求解,
具体步骤如下:
0
12
9
3
0
12
9
3
12
0
6
12
0
6
15
D
(1)
9
6
0
4
D(0)
9
6
0
4
12
4
0
6
4
0
6
3
6
0
3
15
12
6
0
0
12
9
3
0
12
9
13
3
12
0
6
15
12
0
6
10
15
D
(1)
9
6
0
4
12
D
(2)
9
6
0
4
12
4
0
6
13
10
4
0
6
3
15
12
6
0
3
15
12
6
0
0
12
9
13
3
0
12
9
9
3
12
0
6
10
15
12
0
6
10
15
D(3)
9
6
0
4
12
,d(4)
9
6
0
4
10
13
10
4
0
6
9
10
4
0
6
3
15
10
6
0
3
15
10
6
0
设乡镇vi到其他各乡镇的最远距离为max_disdance(vi),则有:
max_disdance(vi)=12,max_disdance(v2)=15,max_disdance(w)=10,max_disdance(v4)=10,max_disdance(v5)=15,所以可知消防站应建在v或v4乡镇,才能使离消防站最远的乡镇到消防站的路程最短。
五、(本题8分)
【解答】对n用归纳法证明。
当n=1时,有N仁F3-l=2-l=1至叽当n=2时,有N2=F4-1=3-仁2。
设n 当n=k+1,对于一个k+l层深度的平衡二叉树而言,其左右子树都是平衡的。 结点数为最少的极端情况,故左右子树中的结点数是不相等的,设其中一个是k层深度的二叉平衡树,另一个是k-l层深度的二叉平衡树。 所以有: Nk+1=1+Nk+Nk-1==1+(Fk+2-1)+(Fk+1-1)=Fk+2+Fk+1-1=Fk+3-1当n=k+1时成立,由此可知深度为n都等式都成立。 六、(本题8分) 【解答】n个结点的平衡二叉树的最大高度为式: 2x>h>2x-1,所以有: xlog2hlog2(log』C5(n1))2) 2 七、(本题8分) 【解答】 11 (1)线性探测再散列的哈希表查找成功的平均查找长度为: Snl (1)<3,解得aW4/5, 21 也就是12/m<4/5,所以m》15,可取m=15。 (2)散列函数可取为H(key)=key%13 (3)散列表如表7-4所示。 散列表 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 40 66 94 5 58 33 47 72 87 22 25 12 (4)12个数据{25,40,33,47,12,66,72,87,94,22,5,58^的比较次数分别是: 1,1,1,1,2,2,3,2,1,3,1,1。 可知查找成功的平均查找次数=(1+1+1+1+2+2+3+2+1+3+1+1)/12=1.25 八、(本题8分) 【解答】有n个叶子结点的带权路径长度最短的二叉树称哈夫曼树,同理,存在有n个叶子结点的带权 路径长度最短的三叉、四叉、……、k叉树,也称为哈夫曼树。 如叶子结点数目不足以构成正则的k叉树(树 中只有度为k或0的结点),即不满足(n-l)MOD(k-l)=0,需要添加权为0的结点,添加权为0的结点的个数为: k-(n-1)M0D(k-1)-1。 添加的位置应该是距离根结点的最远处。 所构造出的哈夫曼树如下图所示: wili=191 i1 其中,每个字母的编码长度等于叶子结点的路径长度,电文的总长度为 注释: 对于正则的k叉树,设叶结点数为n,度为k的结点数为nk,结点总数为m,则有m-仁knk,m=nk+n,两式相减可得n-1=(k-1)nk,即(n-l)MOD(k-l)=0;如n与k不满足此关系,n加上k-(n-1)MOD(k-1)-1后,n'=n+(k-(n-1)MOD(k-1)-1),这时: (n'-l)MOD(k-l)=(n+(k-(n-1)MOD(k-1)-1)-l)MOD(k-l) =((n-1)+(k-1)-(n-1)MOD(k-1))MOD(k-l) =((n-1)-(n-1)M0D(k-1))M0D(k-l) =0。 现有12个初始归并段,其记录数分别为{30,44,8,6,3,20,60,18,9,62,68,85」采用3-路平衡归并,画岀最 佳归并树。 九、(本题9分) 【解答】设该树中结点总数为 N,叶子结点个数为 N0,则有: m NNi i0 (1) m N1iNi i1 (2) 由 (2)- (1)再经过移项可得: m N01(i i1 1)Ni 十、(本题15分) 【解答】 对于排列的解空间可构造一个虚拟的解空间树,比如n=5,k=3时的解空间树如下图所示,可采用对此 树进行先序遍历方式进行遍历,并用递归法进行递归输出从n个数中挑选k个进行排列所得序列。 具体算法实现如下: //文件路径名: exam7\alg.htemplatevclassElemType>voidArrage(ElemTypea[],intk,intn,intoutlen=0) //操作结果: 回溯法输岀排列序列,a[0..k-1]为k个数的排列序列outlen为当前所求排列//序列的长度,其中outlen=k时的排列序列为所求;n为list数组长度 //处理a[i]Swap(a[outlen+1],a[i]); Arrage(a,k,n,outlen+1);//Swap(a[outlen+1],a[i]); { if(k<0||k>=n)return;inti; if(outlen==k+1) {//得到一个排列
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 期末 复习题