文章目录
- 一、历年选择题真题 总结
-
- 1、2008(12.1日一天)
- 2、2012
- 3、2013
- 4、2014
- 5、2015(12.2日二天)
- 6、2016
- 7、2017(12.3日三天)
- 8、2018
- 9、2019
- 10、2020(12.4日四天)
- 11、2021
- 12、22
- 二、历年算法真题题 总结
-
- 1、 文本
- 2、表格
- 三、历年算法真题
-
- 1、Fibonacci 08/13/14/17√
-
- i 递归
- ii 非递归
- 2、折半查找 12/18/19/20√
-
- i 非递归
- ii 递归
- 3、数组合并 12/14/19
- 4、***扩展(真题):单链组合 第24T。
- 五、二叉树结点数 13/15/19
- 6、快速排序 13/16/18年
- 7.堆排序的堆调整 15/17/20
- 8.中缀表达式括号下标17/18
- 9.中缀表达式括号匹配吗? 19
- 10、==***判断无环图(拓扑排序) 20/21==
- 11、回文数组 08 12
- 12.数组在当地逆转,***==单链表逆转==13 14
- 13二叉排序树,插入13 17
-
- i 非递归查找
- ii 递归查找
- iii 插入新节点
- 14、==***快速转移三元组 14 17 (第25特殊)==
- 15、逆序数 15 17
- 16.删除零元素,删除重复元素15 16 21
- 17.插入顺序表 18 20
- 18.二叉叶结点数 18 20
- 19、***==还原带空节点#的前序遍历序列== 21
-
- i 官方答案(是的 bug)
- ii 网上正确答案(背这个)
- 20、==二维数组压缩成三元组== 21
- 21.归并排序算法 21
- 22.单链表删除结点 20
- 23单链表交换指定结点 18
- 24、***==单链表合并去重== 17
- 25、***==一维数组中的非压缩矩阵压缩到三元组== 19
- 26、==暴力破解== 19
- 27、汉诺塔 19
- 28、图的DFS 18
- 29、==图中算法题:要求最远距离== 12
- 30、最短路径==Floyd== 13
- 31.数组移动所有偶数 18
- 32.序列最值差 14
- 33.数组中最多的相同元素 12
- 34.(背)判断二叉树是否相同(内容结构) 17
- 三五、二叉树交换子树 16
- 36.(背)二叉树深度 12
- 三七二叉树根结点平衡因子 15
- 三八、二叉树K层结点数 08
- 39判断二叉树是否平衡 14
- 40 、栈基本操作 16
- 41.队列基本操作 15
- 四、扩展必背
-
- 确定二叉树
-
- i 前序 中序
- ii 中序 后序
- 2、==最小生成树==(对于无向图,邻接矩阵)
-
- i prim(普利姆算法) 针对顶点
- ii 克鲁斯科尔(不太可能,因为有排名)
- 3、==最短路径==(对于有向图,邻接矩阵)
-
- i 迪杰斯特拉
- ii Floyd 真题 13年,二、30
- 4、==串的算法==
-
- i 暴力破解法 二、26
- ii kmp算法
- iii 改进kmp算法
- 5、汉诺塔(27T)、==约瑟夫环==(最后看)
- 6、图的 DFS(28T)、==BFS广度优先遍历(层次遍历)==
- 7、==二叉树的层次和深度 递归和非递归(03年前考过)==
-
- i 二叉树的深度优先 非递归遍历
- ii 前中后序 递归遍历
- iii 二叉树广度优先遍历:层次遍历
- 8、08年前的代码,需要看
-
- i 两个单链表交叉合并 2003
- 五、==大纲要求==
-
- 1. 排序and 查找:==归并 希尔是重点==
-
- i 直接插入排序
- ii 冒泡排序
- iii 简单选择排序
- iv ==希尔排序== **
- 2. 图 前面都有了
- 3 二叉树:真题 以下北化数据
- 4 线性表:真题为主
- 5 串 矩阵:二维压缩成三元组,三元组转移,kpm,暴力。
- 六、北化数据必背
-
- 判断二叉树是否完全(理解二叉树) 背)
- 2.判断是否是二叉排序树(理解) 背)
- 3.在给定二叉排序树中要求指定结点的层次(easy)
- 4.递归求二叉树高度 二、36
一、历年选择题真题 总结
1、2008(12.1日一天)
- 图的广度优先搜索中邻接点的寻找 具有先进先出的特点。
- 8T,。
- n哈弗曼树叶结点的总结点 2n-1。
- 推导 n = n 0 n 1 n 2 , n 0 = n 2 1 , n 1 = 0 n = n_0 n_1 n_2, n_0 = n_2 1 , n_1 = 0 n=
n0+n1+n2,n0=n2+1,n1=0 。
- 推导 n = n 0 n 1 n 2 , n 0 = n 2 1 , n 1 = 0 n = n_0 n_1 n_2, n_0 = n_2 1 , n_1 = 0 n=
- 2.5T,大顶堆(降序堆)是根结点大于其他所有结点的完全二叉树。
- 2.7T,二叉链结构存储一颗n个结点的二叉树上,有n+1 个空链。
- 2.10T,递归的代码一定可以用非递归的形式来实现。
- 2.13T,二叉树中,具有两个子结点的结点,中序后继结点最多只可能有一个子结点。
- 2.14T,若一颗二叉树的左右子树都是平衡二叉树,则该二叉树为平衡二叉树。×
- 少一个条件,左右子树高度之差小于等于1。
2、2012
-
6T,
- 链式结构线性表的存储空间比顺序结构多,而且链表结点的存储空间利用率比顺序表稍低(存储密度不够大)。
- 元素的物理顺序与逻辑顺序不一致,顺序存储结构的物理顺序和逻辑顺序一致。
-
7T,。
-
13T,子链兄弟链法存储一颗树(孩子兄弟存储:即二叉链表),根结点右指针为空。
-
14T, 。下三角压缩存储方式,是**自然序列的求和**。
- 三角行列式的求和是:
- 注意矩阵从0开始,并且第一次存储地址为0。
-
16T,
- B:图的广度优先搜索中邻接点的寻找具有“先进先出”的特征。
-
18T,排序算法:
- 。
-
25T,$\lceil log_2(n+1) \rceil $。
-
27T,m阶B-树是
-
一颗m叉平衡排序树。√
-
A选项说 m叉排序树 ×,why,A就是原因。
-
-
29T,最短路径求法,如何快速求呢。
-
39T,二叉树存的一个中缀表达式。前序遍历。
-
43T,$n_0 = 1 + n_2 + 2n_3 +3n_4… $。
-
44T。
3、2013
- 2T。特例。
- 6T,顺序表的物理顺序和逻辑顺序有关。
- 链表的物理顺序和逻辑顺序无关。
- 12T,关键路径。
- 18T,,归并是O(n),快速排序是logn。
- 19T
- 22T,23T。
- 27T,m阶B-树的根结点最少有 1 个关键字。
- 32T,二叉树的中序遍历可以得到有序序列。
- 33T,归并操作。
- 35T,:
- 1、牺牲一个单元来区分队空和队满。
- 2、类型中增设表示元素个数的数据成员Q.size。
- 3、类型中增设tag数据成员,以区分是队满还是队空。
- 2和3都是使用了操作标记,所以题目中使用的是牺牲一个单元的方法,所以最多可以连续执行n-1次入队操作。
- 36T,
- 有向图的邻接表结构比邻接矩阵结构要节省空间。不一定,图为稀疏图,邻接表好,稠密图时,邻接矩阵好。
- ==AOE(activity on edge)==网 是权值在弧上的带权图。 AOV(activity on vertex)
- 38T,。
- 39T,二叉树的前序遍历序列和中序遍历序列相同的是:
- 所有结点只有右子的二叉树。 √
- 根结点没有左子的二叉树。× 因为仅根结点符合 是不可以的,还有右子树的所有左子树也得符合。
- 只有根结点的二叉树。×,why。
- 40T、42T。
- 43T,若一颗二叉树上 任一结点到根的路径上的结点关键字 均为有序排列,则二叉树为
- 堆,√
- 哈夫曼树,× 关键字只出现在叶结点上。
4、2014
-
8T,有点别扭
-
10T,最小生成树是图的极小连通图,包含图中所有顶点。
- 最小生成树有n-1条边。
-
20T,完全二叉树的层次遍历序列 与 结点间的 父子关系 存在对应关系。
-
23T,大于100000的待排序序列为有序序列,效率最快的是 直接插入。
-
26T,存储矩阵的三元组表示法
- 按照行列有序排列。
- 矩阵计算速度更快。不需要进行查找。
- 同行非零元素排列在一起。
-
29T,最小生成树的应用:城市之间道路问题。
-
33T,哈夫曼树
- 。
- 。
- 若允许对不同字符用不等长的二进制位表示,则称为可变长编码,哈夫曼编码属于变长编码。
-
36T
- A 快速排序的性能优于 归并排序。
-
- Dijkstra 算法是求 有向带权图 中单源点到其余各顶点的最短路径,。
- 以0 为起点的最短弧 属于目标解集。
- 最先求得的是目标解集中最短的最短路径。
-
40T,先根序列。
-
45T ,散列表
-
散列表采用顺序表作为容器
-
通过散列函数来定位元素
-
适合于 动态查找
-
散列表的装载因子越大冲突几率越小。×,。
-
5、2015(12.2日二天)
-
2T,是指元素顺序存放在 预先分配 的缓冲区中。
-
4T,。
-
7T,。
-
9T,。
-
21T,:以起点为弧尾的权值最小的弧。
-
22T,图的邻接表存储结构上,顶点为n,弧边为e,**e>n,计算所有顶点入度最快的快速算法,时间复杂度**为:
- O(e)
-
25T,
-
28T,。
-
29T,。
-
35T,题有问题,哪一种排序方法的排序躺数与初始序列有关?
- BD是直接交换排序(起泡)和快速排序,而答案只选了B :直接交换排序。
-
38T,深度越小的二叉排序树平均查找性能最好
-
45T,消除递归形式不一定要通过栈,比如斐波那契数列 。
6、2016
- 1T,栈的操作性质。(注意,是操作性质)
- 出栈序列与操作顺序有关。√
- 3T,二叉树性质细节题,。
- 二叉树的度为2。×,有五种形态。
- 二叉树是**无向树。×,是有向树**
- :
- 1、有且仅有一个结点入度为0.
- 2、除树根外的结点入度为1.
- 3、从树根。
- 二叉树有且只有一个根结点。×。
- 4T,一般单链表中,数据元素将放在 动态分配 的结点中。
- 8T,图的论述。
- 无向图的边数等于顶点度数之和。×,还要再除2。
- 有向图中的顶点入度之和等于顶点出度之和。√
- 有向图是特殊的无向图。×,
- 无向图可以看作每条边都有两个方向的有向图。所以,无向图是特殊的有向图。
- 有向图中的弧在无向图中称为边。×,弧和边不可混淆。
- :
- 1、邻接矩阵是对称的
- 2、矩阵 1 的个数 为图中总边数 的两倍。
- 3、矩阵中 1行 或者 第 1列的元素之和即为 顶点 i 的度
- :
- 1、矩阵1 的个数 为 图中的边数。
- 2、矩阵中 第 i 行的元素之和 即为顶点的出度,第 i 列的元素之和为顶点的入度。
- 15T,?
- 就是求叶子结点。
- n 1 = 0 n_1 = 0 n1=0 。
- n = 2 n 0 − 1 n = 2n_0 - 1 n=2n0−1 。
- 20T,相比较而言,不适合应用顺序结构线性表来处理的是:数据规模不确定
- B:支持随机存取。
- C:只在表尾增删数据。
- D:支持折半查找。
- 22T,。
- 因为边表的结点个数就是出度个数。
- 入度个数的统计可以联想到 拓扑排序中 第一步 就是统计入度个数,进行遍历。
- 25T,。
- 26T,挖字眼,。
- 29T,直接交换排序,就是冒泡排序。
- 稳定排序法的排序性更为稳定。×,。
- 34T,堆排序。
-
升序排序 需要 建立降序堆,也就是大顶堆。
-
降序排序 需要 建立升序堆,也就是小顶堆。
-
建堆过程就是建立一个完全二叉树。
-
41T,平衡二叉树。
- 平衡二叉树是完全二叉树。×
- 完全二叉树是平衡二叉树。×
- 两颗平衡二叉树合并到根结点可得到一颗新的平衡二叉树。×(肯定错)
- 平衡二叉树的左右子树肯定是平衡二叉树。
-
43T,折半查找一个存在的数。画判定树。
-
44T。
-
45T,图的邻接矩阵的下三角都是0,则图是
- 有向无环图。
7、2017(12.3日三天)
- 6T,,为1。
- 注意 上句话 中的 删除操作 确实为 O(1)。
- 扩展:。
- 10T,三元组描述
- D:三元组表示法适合按行进行访问。
- 11T,D选型:缺少最多。
- 16T。
- 18T,图的陈述。
- 图根据 关系特征 可以分为有向图和无向图两大类。错,有无方向
- **图的深度优先遍历和广度优先遍历可以确定该图。**错
- 数据既可以部署在图的顶点上也可以部署在弧上。对
- 19T,如果 有向图的关系集合 满足 偏序关系 ,则称为:A
- A有向无环图,拓扑排序,想想特性
- B生成树
- C无向图
- D完全图。
- 。
- ssss
- 27T,求 关键路径中 ve值。可看原题,深度思考一下。
- i和j的位置可能互换了。
- 28T,
- 一条最短路径必是由另一条最短路径构成。错
- 以V0为起点的最短的弧必为一条最短路径。对
- 以V0为起点的最长的弧必不是一条最短路径,错
- 29T,不打字了,到时候回看吧。
- 32T,判定树。记得加1,这里当时忘加1了
- 33T。
8、2018
- 3T,A的复杂度是O(n),B的复杂度是O( n 2 n^2 n2)。选D。
- A 算法A的速度 比算法 B快 ×
- B 算法B的速度比算法 A快 ×
- C 算法B比算法A更复杂 ×
- D,以上都不对
- 。
- 时间复杂度为O($ n^2 ) , 说 明 算 法 的 时 间 复 杂 度 T ( O ) 满 足 T ( n ) < = c ∗ ) ,说明算法的时间复杂度T(O) 满足 T(n) <= c* ),说明算法的时间复杂度T(O)满足T(n)<=c∗ n^2$
- 问题规模 就是 n,时间复杂度T(O) 是关于问题规模 n 的函数。
- 。
- D:串的存储结构 顺序存储结构。
- A
- 5T,A**静态链表支持数组下标访问**。
- D:。√
- 6T,回看题吧。
- 8T。循环队列的初始状态,head=tail。回看天勤资料。
- 10T。三元组陈述
- 三元组表由非零元素值、行数、列数 组成。×,按定义来。
- 三元组表中的非零元素要求按先行后列的顺序有序存储。√
- 三元组表可以节省存储空间,但需要更多的矩阵计算时间。×。从时间复杂复杂度上来看,然而并没有需要更多时间
- 11T,坑题。BD,括号内外不一样。
- 14T,**一颗含有18个叶结点的二叉树,其深度(空树为0)最少为**6。
- 试试,有趣
- 第一步: n 0 = n 2 + 1 , 所 以 n 2 = 17 n_0 = n_2 + 1,所以n_2 = 17 n0=n2+1,所以n2=17 。
- 第二步:$ n = n_0 + n_1 + n_2, 因为求最少,所以 n_1 = 0, 则 n = 35$ 。、
- 第三步:$\lfloor log_2(n+1) \rfloor $ 为6。
- 16T,B 二叉树是一种链式结构,×,应该是逻辑结构。
- 18T,A,哈夫曼树结果不唯一。
- 19T,有问题。。。。。。。。。。。。。
- 22T,找强连通分量。最后看看吧。
- 26T,
- 27T,递归实现的快速排序法,递归深度取决于,,,
- A,
- B,
- 28T,先进排序法:是平均时间复杂度为 nlogn 的排序算法:快排、堆排序、归并排序。
- 简单排序算法虽然排序速度较慢,但实现较为容易。×。(我觉得挺对的)
- 31T,C咋错了,。
9、2019
-
1T,
-
A,数据元素的数据项中可以有多个次关键字,只能有一个主关键字。×,
-
C,。√
-
D,数据元素是构成数据集合的数据对象,由多个数据项组成。×
- 数据元素是数据的基本单位。
-
-
3T,
- B, 逻辑结构决定了算法的设计,物理结构决定算法的实现。√
- D,同一种物理结构可以用多种逻辑结构来实现。×,
- 说反了。
-
5T,
- A,素。× 空表
- 这是性质,没有错,但是不能这样说,空表就没有。
- B,线性表中,每个元素有且只有唯一的前驱和惟一的后继。×。空表。
- A,素。× 空表
-
13T,。
-
15T
- D,带行向量的三元组表上元素访问的最坏时间复杂度 是 O(m*n),×
- 知道咧,三元组表数据结构为一元数组。存储的是稀疏数组,非零个数小于m*m。
- D,带行向量的三元组表上元素访问的最坏时间复杂度 是 O(m*n),×
-
:
- n 0 = 1000 , 所 以 n 2 = 999 n_0 = 1000, 所以 n_2 = 999 n0=1000,所以n2=999。
- n个结点的总链数为2n: n = n 0 + n 1 + n 2 = 1000 + n 1 + 999 n = n_0 + n_1 + n_2 = 1000 + n_1 + 999 n=n0+n1+n2=1000+n1+999 。
- 所以 ( 2 n 2 + n 1 ) / 2 n = ( 2 ∗ 999 + n 1 ) / 2 ( 1999 + n 1 ) = 1 / 2 (2n_2 +n_1)/2n = (2*999+n_1)/2(1999+n_1) = 1/2 (2n2+n1)/2n=(2∗999+n1)/2(1999+n1)=1/2。
- 。
-
22T,23T,画图题.。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
- 。
-
24T
- A,图的邻接表结构计算 所有顶点 的入度 只需要遍历一遍整个邻接表。√。
- 。
- B,图的邻接表结构计算 指定顶点 的出度 只需要遍历一遍整个邻接表。×。只遍历边表即可
- 。
- A,图的邻接表结构计算 所有顶点 的入度 只需要遍历一遍整个邻接表。√。
-
26T
- B,有向图上的一条路径必属于某一个深度优先遍历序列。√
- C,
- 图包含连通图和连通分量。
-
27T,
- A,如果一次深度优先遍历能遍历完所有的顶点,则该无向图为连通图。√
- 和26T C 有点意思。
- B,如果一次深度优先遍历完遍历完所有顶点,则该有向图为强连通图。×
-
31T,
- A,Dijkstra和Floyd都利用了最短路径的局部最优特性。√。
- B,Dijkstra通过穷举起点和终点的所有路径来确定最短路径。×
- 不是的。
- C,Floyd改善了Dijkstra算法在最坏情况下的时间复杂特性。×
- 改善额是Dijkstra不能求权值为负值的单源起点最短路径问题。
- D,Dijkstra只适合于单源起点最短路径问题的求解。×
- 任意两点间路径也可以。
-
34T,D选型
-
36T,
- B,。√
- 为什么快速排序的平均性能最好?
- C,先进排序法的平均时间复杂度优于简单排序法,是更快的排序算法。×
- B,。√
-
40T,考到了很少考的归并排序。
10、2020(12.4日四天)
-
1T,抠字眼,紧扣定义。
- A,数据元素是数据项中的数据内容,×,说反了,数据项是数据元素的数据内容。也就是B选项了
- C,数据元素是不可再拆分的数据,×,数据元素由若干个数据项组成。
- 数据项是不可再拆分的数据,×
- 数据肯定可以拆分。课本定义:。
-
2T,关键字是特殊的数据项。
- D,关键字是数据项的类型。×。
-
4T,定义细节题。
- A,物理结构是逻辑结构的代码表示,×,
- 分清逻辑结构和物理结构的定义
- B,逻辑结构与物理结构相互对应,×
- C,逻辑结构决定了物理结构,× 物理结构和逻辑结构无关系。
- D,。√。
- A,物理结构是逻辑结构的代码表示,×,
-
5T,复杂度。
- A,。√
- B,时间复杂度越高,算法执行时间越长。×
- C,O(logn) 的阶高于 O(n),×
- D,算法的时间复杂度只与问题规模有关,×
-
北化资料 13页5T。
-
6T,细节题,正确的是 A
- A,。√
- B,线性表的关系集合是全序关系。×
- C,线性表中的每个元素都有唯一前驱。×,表头没有
- D,线性表中的每个元素有唯一后继。×
-
7T,
-
8T,单链表的空间开销高于顺序表。×,目前我