本文旨在选取容易忘记的知识点、算法和必考点,助力你在期末考试时保证选填题满分。毕竟对于BUAA数据结构期末来说,编程题有一定的不确定性。尤其是第三道编程题,做出来的人肯定少之又少。所以,保证选填是非常重要的。
本文是考试导向型,而不是知识点导向型。
考前只需要花5分钟快速过一下本文,就能帮你捡起来许多马上就要遇到的问题。题目不难,但全是考试经典题。
选填
选择题
1
若在有序序列中采用折半查找方法进行查找,用来描述该查找过程的“判定树”的形状与____有关。
A.序列中元素的值
B.序列中元素的排列次序
C.序列中元素的类型
D.序列中元素的个数
选D。
2
一有向带权图如下图所示,若采用迪杰斯特拉(Dijkstra)算法求源点a到其他各顶点的最短路径,得到的各最短路径的目标顶点顺序是____。
A. b, c, d, e, f
B. b, c, f, e, d
C. c, e, b, d, f
D. b, c, f, d, e
选D。注意是有向图。做题的方法就是已有一个集合,看这个集合中和集合外的某个元素构成权值最短的路径。具体来说:
在这里梳理一下Dijkstra算法的做题原理。也就是每次从集合S的所有点中进行扩展,找到延展出来的一条最短路径(注意下表中第5趟改为abce)。
3
假设⼆叉树结点中都保存有关键字, 那么下⾯的⼆叉树中: 从任⼀结点出发到根的路径上所经过的结点序列都是按其关键字有序的是 。
A. 完全⼆叉树 B. ⼆叉排序树 C. 满⼆叉树 D. ⼤顶堆
选D。**从任意节点到根的路径上所经过的节点序列按其关键字有序的树是大顶堆。**在大顶堆中,任一节点的关键字总是大于或等于其子节点的关键字,因此从任一节点到根的路径上的关键字序列是非递减的。
4
可⽤于求⽆向图的所有连通分量的算法是
A. ⼴度优先遍历 B. 拓扑排序 C. 求最短路径 D. 求关键路径
选A。广度优先遍历可以从一个起点开始,遍历所有与起点连通的节点,标记这些节点,然后寻找下一个未标记的节点作为新的起点,继续进行广度优先遍历,直到所有节点都被标记为止。这样可以找到所有的连通分量。
拓扑排序是一种用于有向无环图(DAG)的算法,它给出的是一个线性序列,不能用于求无向图的连通分量。
求最短路径算法(如Dijkstra或Bellman-Ford)用于在加权图中找到两点之间的最短路径,不适用于找连通分量。
关键路径算法通常用于项目管理中的关键路径法(CPM),它用于计算项目中任务的最长路径,不适用于找连通分量。
5
⼀个具有 767 个结点的完全⼆叉树, 其叶⼦结点个数为
A. 383 B. 384 C. 385 D. 386
选B。完全二叉树最多有一个度为1的结点。又跟据二叉树有重要性质:若非空二叉树有n0个叶结点,有n2个度为2的结点,则 n0=n2+1。
我们判断:如果有一个度为1的结点,那么所有剩下的节点,就是叶节点和度为2的节点个数之和为384.这是不可能的,因为n0=n2+1,合起来肯定是奇数。
所以没有度为1的节点,只有度为0和2的节点。计算即可。
6
在⼆叉排序树中进⾏查找的效率与有关。
A. ⼆叉排序树的深度
B. ⼆叉排序树的叶结点的个数
C. 被查找结点的度
D. ⼆叉排序树的存储结构
选A。基本题。
7
对于长度为9的有序顺序表,若采用折半搜索,在等概率情况下搜索成功的平均搜索长度为 ____的值除以9。
A、20
B、18
C、25
D、22
选C。直接验证即可。一定要注意折半查找的时候要下标low+high/2,而不是直接high/2.并且一定要注意每次比较完之后low或者high要随着mid进行调整(mid±1)。
8
下面关于m 阶B- 树说法正确的是( )
①每个结点至少有两棵非空子树; ②树中每个结点至多有m-1 个关键字;
③所有叶子在同一层上; ④当插入一个数据项引起B 树结点分裂后,树长高一层。
A. ①②③ B. ②③ C. ②③④ D. ③
选B.
9
已知序列25,13,10,12,9是大顶堆,在序列尾部插入新元素18,将其再调整为大顶堆。调整过程中元素之间进行的比较次数是
A.1 B.2 C.4 D.5
选B。
10
给出一组关键字序列{12,2,16,30,8,28,4,10,20,6,18},当用快速排序(选第一个记录为基准点进行划分,采用教材中“快速排序”描述的算法)从小到大进行排序第一趟结束时的序列为
A. 6,2,8,10,4,12,28,30,16,20,18
B. 6,4,8,10,2,12,28,30,16,20,18
C. 4,2,6,10,8,12,28,30,20,16,18
D. 4,2,8,10,6,12,16,20,28,30,18
选C。
11
若利用快速排序算法进行从小到大排序,下列选项中,不可能是经过两次选择分界元素并确定其最终位置后的排序结果的是:
A. 2,3,5,4,6,7,9
B. 2,7,5,6,4,3,9
C. 3,2,5,4,7,6,9
D. 4,2,3,5,7,6,9
选C。快排的阶段性排序结果的特点是,第i趟完成时,会有i个及以上的数出现在它最终将要出现的位置,即它左边的数都比它小,它右边的数都比它大。题目问第二趟排序的结果,第二趟结束时,必有两个或两个以上的元素“已就位”,也就是说这个元素左边的所有元素都比它小,右边的所有元素都比它大。A:2、3、6、7、9均符合,所以A排除;B:2、9符合;C:只有一个元素9符合。所以C不可能,选C。D:5、9符合。
12
在一棵度为4的树T中,若有20个度为4的结点,10个度为3的结点,1个度为2的结点,10个度为1的结点,则树T的叶节点个数是____。
A.41 B.82 C.113 D.122
选B。sum(所有结点个数)=20x4+10x3+1x2+10x1+1(根结点)=123个结点;sum(叶子节点个数)=123-20-10-1-10=82。
13
将森林F转换为对应的二叉树T,F中叶结点的个数等于:
A. T中叶结点的个数
B. T中度为1的结点个数
C. T中左孩子指针为空的结点个数
D. T中右孩子指针为空的结点个数
选C。
填空题
1
假设采⽤快速排序算法按照从⼩到⼤的顺序对 10 个数据元素进⾏排序, 这 10 个数据的初始状态为 (57,11 ,12,-23,76,1901,20,96,-38,0) , 若第⼀次选⽤第⼀个数据 57 作为分 界元素, 则第⼀趟排序 后, 分界元素 57 前有 ____个数据元素。
6。快速排序算法在进行第一次排序(分区操作)时,会将选择的基准元素(pivot)放在其最终的位置上,使得所有比它小的元素都在它的左边,所有比它大的元素都在它的右边。第一次排序后,分界元素57前有6个数据元素。因为有6个数字比57小。
2
n 个科技园区, 现要为它们建成能相互通讯的有线⽹, 并且使线路⻓度总和最短, 这可以归结为图的____问题。
最小生成树