2020年计算机考研408数据结构真题(客观题)

本文深入探讨了数据结构中的二叉树、堆和图的算法,包括二叉排序树、最小生成树的构造、大根堆的性质以及深度优先搜索的应用。同时,分析了排序算法在部分有序数组中的效率比较,如直接插入排序与简单选择排序。此外,还涉及了B树的插入操作及其在实际问题中的应用。
摘要由CSDN通过智能技术生成

1、将一个10x10对称矩阵M的上三角部分的元素m,j (1≤i≤j≤10)按列优先存入C语言的一维数组N中,元素m7,2在N中的下标是( )。

A、15
B、16
C、22
D、23

答案:C
解析:
上三角矩阵按列优先存储,先存储仅1个元素的第一列, 再存储有2个元素的第二列,以此类推。m7,2位于左下角,对应右上角的元素为m2,7,在m2,7之前存有:
第1列:1
第2列:2

第6列: 6
第7列: 1
前面共存有1+2+3+4+5+6+1=22个元素(数组下标范围为0~21),注意数组下标从0开始,故m2,7在数组N中的下标为22,即m7,2在数组N中的下标为22。.

2、对空栈S进行Push和Pop操作,入栈序列为a, b, c, d,e,经过Push, Push, Pop, Push, Pop, Push,Push, Pop操作后得到的出栈序列是( )。

A、b,a,c
B、b,a,e
C、b,c,a
D、b,c,e

答案:D
解析:按题意,出入栈操作的过程如下:故出栈序列为b,c, e。
在这里插入图片描述

3、对于任意-棵高度为5且有10个结点的二叉树,若采用顺序存储结构保存,每个结点占1个存储单元(仅存放结点的数据信息),则存放该二叉树需要的存储单元数量至少是( )。

A、31
B、16
C、15
D、10

答案:A
解析:二叉树采用顺序存储时,用数组下标来表示结点之间的父子关系。对于一棵高度为5的二叉树,为了满足任意性,其1~5层的所有结点都要被存储起来,即考虑为一棵高度为5的满二叉树,总共需要存储单元的数量为1+2+4+8+ 16=31。

4、已知森林F及与之对应的二叉树T,若F的先根遍历序列是a, b,c,d,e,f,中根遍历序列是b,a,d,f,e,c,则T的后根遍历序列是( )。

A、b,a,d,f,e,c
B、b,d,f,e,c,a
C、b,f,e,d,c,a
D、f,e,d,c, b, a

答案:C
解析:森林F的先根遍历序列对应其二叉树T的先序遍历序列,森林F的中根遍历序列对应其二叉树T的中序遍历序列。即T的先序遍历序列为a, b,c,d,e,f,中序遍历序列为b,a,d,f,e,c。根据二叉树T的先序序列和中序序列可以唯-确定它的结构,构造过程如下:可以得到二叉树T的后序序列为b,f,e,d,c, a.
在这里插入图片描述

5、下列给定的关键字输入序列中,不能生成如下二叉排序树的是( )。
在这里插入图片描述
A、4,5,2, 1,3
B、4,5,1,2,3
C、4,2,5,3, 1
D、4,2, 1,3,5

答案:B
解析:每个选项都逐一验证,选项B生成二叉排序树的过程如下:显然B选项错误。
在这里插入图片描述

6、修改递归方式实现的图的深度优先搜索(DFS) 算法,将输出(访问)顶点信息的语句移到退出递归前(即执行输出语句后立刻退出递归)。采用修改后的算法遍历有向无环图G, 若输出结果中包含G中的全部顶点,则输出的顶点序列是G的( )。

A、拓扑有序序列
B、逆拓扑有序序列
C、广度优先搜索序列
D、深度优先搜索序列

答案:B
解析:DFS是一个递归算法,在遍历过程中,先访问的顶点被压入栈底。设在图中有顶点vi;它有后继顶点vj,即存在边<vi, vj>。根据DFS的规则,vi入栈后,必先遍历完其后继顶点后vi才会出栈,也就是说vi会在vj之后出栈,在如题所指的过程中,vi在vj后打印。由于vi和vj具有任意性,从上面的规律可以看出,输出顶点的序列是逆拓扑有序序列。

7、已知无向图G如下所示,使用克鲁斯卡尔(Kruskal) 算法求图G的最小生成树,加到最小生成树中的边依次是()。
在这里插入图片描述

A、(b,f), (b,d), (a,e), (c,e),(b,e)
B、(b,f), (b,d), (b,e), (a,e),(c,e)
C、(a,e), (b,e), (c,e), (b,d),(b,f)
D、(a,e), (c,e), (b,e), (b,f),(b,d)

答案:A
解析:Kruskal算法:按权值递增顺序依次选取n-1条边,并保证这n-1条边不构成回路。初始构造一一个仅含n个顶点的森林;第一步,选取权值最小的边(b,f)加入最小生成树;第二步,剩余边中权值最小的边为(b, d),加入最小生成树,第二步操作后权值最小的边(d,f)不能选,因为会与之前已选取的边形成回路;接下来依次选取权值9, 10, 11对应的边加入最小生成树,此时6个顶点形成了一棵树,最小生成树构造完成。按照上述过程,加到最小生成树的边依次为(b,f), (b, d), (a, e), (c, e), (b, e)。其生成过程如下所示。
在这里插入图片描述

8、若使用AOE网估算工程进度,则下列叙述中正确的是( )。

A、关键路径是从原点到汇点边数最多的一条路径
B、关键路径是从原点到汇点路径长度最长的路径
C、增加任一关键活动的时间不会延长工程的工期
D、缩短任一关键活动的时间将会缩短工程的工期

答案:B
解析:关键路径是指权值之和最大而非边数最多的路径,故选项A错误。选项B正确,是关键路径的概念。无论是存在一条还是存 在多条关键路径,增加任一关键活动的时间都会延长工程的工期,因为关键路径始终是权值之和最大的那条路径,选项C错误。仅有一条关键路径时,减少关键活动的时间会缩短工程的工期;存在多条关键路径时,缩短一条关键活动的时间不一定会缩短工程的工期,缩短了路径长度的那条关键路径不一定还是关键路径,选项D错误。

9、下列关于大根堆(至少含2个元素)的叙述中,正确的是( )。

I.可以将堆视为一棵完全二叉树
II.可以采用顺序存储方式保存堆
III.可以将堆视为一棵二叉排序树
IV. 堆中的次大值一定在根的下一层

A、仅I、II
B、仅II、III
C、仅I、II和IV
D、I、III和IV

答案:C
解析:这是一道简单的概念题。堆是一棵完全树,采用一维数组存储,故I正确,II 正确。大根堆只要求根结点值大于左右孩子值,并不要求左右孩子值有序,II 错误。堆的定义是递归的,所以其左右子树也是大根堆,所以堆的次大值一定是其左孩子或右孩子, IV正确。

10、依次将关键字5,6,9, 13, 8,2, 12, 15插入初始为空的4阶B树后,根结点中包含的关键字是()。

A、8
B、6,9
C、8,13
D、9,12

答案:B
解析:一个4阶B树的任意非叶结点至多含有m-1=3个关键字,在关键字依次插入的过程中,会导致结点的不断分裂,插入过程如下所示。得到根结点包含的关键字为6,9.
在这里插入图片描述

11、对大部分元素已有序的数组进行排序时,直接插入排序比简单选择排序效率更高,其原因是()。

I.直接插入排序过程中元素之间的比较次数更少
II.直接插入排序过程中所需要的辅助空间更少
III.直接插入排序过程中元素的移动次数更少

A、仅I
B、仅III
C、仅I、II
D、I、II和III

答案:A
解析:考虑较极端的情况,对于有序数组,直接插入排序的比较次数为n-1,简单选择排序的比较次数始终为1+2+…+n-1=n(n-1)/2,I正确。两种排序方法的辅助空间都是0(1), 无差别,II错误。初始有序时,移动次数均为0; 对于通常情况,直接插入排序每趟插入都需要依次向后挪位,而简单选择排序只需与找到的最小元素交换位置,后者的移动次数少很多,III 错误。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值