数据结构与算法分析-六套期末复习题(含答案)
数据结构与算法期末考试复习试题

《数据结构与算法》复习题一、选择题。
1.在数据结构中,从逻辑上可以把数据结构分为 C 。
A.动态结构和静态结构 B.紧凑结构和非紧凑结构C.线性结构和非线性结构 D.内部结构和外部结构2.数据结构在计算机内存中的表示是指 A 。
A.数据的存储结构 B.数据结构 C.数据的逻辑结构 D.数据元素之间的关系3.在数据结构中,与所使用的计算机无关的是数据的 A 结构。
A.逻辑 B.存储 C.逻辑和存储 D.物理4.在存储数据时,通常不仅要存储各数据元素的值,而且还要存储 C 。
A.数据的处理方法 B.数据元素的类型C.数据元素之间的关系 D.数据的存储方法5.在决定选取何种存储结构时,一般不考虑 A 。
A.各结点的值如何 B.结点个数的多少C.对数据有哪些运算 D.所用的编程语言实现这种结构是否方便。
6.以下说法正确的是 D 。
A.数据项是数据的基本单位B.数据元素是数据的最小单位C.数据结构是带结构的数据项的集合D.一些表面上很不相同的数据可以有相同的逻辑结构7.算法分析的目的是 C ,算法分析的两个主要方面是 A 。
(1)A.找出数据结构的合理性 B.研究算法中的输入和输出的关系C.分析算法的效率以求改进 C.分析算法的易读性和文档性(2)A.空间复杂度和时间复杂度 B.正确性和简明性C.可读性和文档性 D.数据复杂性和程序复杂性8.下面程序段的时间复杂度是 O(n2) 。
s =0;for( I =0; i<n; i++)for(j=0;j<n;j++)s +=B[i][j]; sum = s ;9.下面程序段的时间复杂度是 O(n*m) 。
for( i =0; i<n; i++)for(j=0;j<m;j++)A[i][j] = 0;10.下面程序段的时间复杂度是 O(log3n) 。
i = 0;while(i<=n)i = i * 3;11.在以下的叙述中,正确的是 B 。
数据结构期末考试试题及答案

数据结构期末考试试题及答案一、选择题(每题2分,共20分)1. 在数据结构中,算法的时间复杂度是指()。
A. 编写代码的时间B. 代码的长度C. 执行代码所需的时间D. 执行代码所需的指令条数2. 下列关于队列的描述,错误的是()。
A. 队列是先进先出(FIFO)的线性表B. 队列允许在一端进行插入操作C. 队列的插入操作称为入队D. 队列的删除操作称为出栈3. 对于长度为n的有序数组,使用二分查找法查找一个元素的平均时间复杂度是()。
A. O(n)B. O(n^2)C. O(log n)D. O(1)4. 在图的遍历中,深度优先搜索(DFS)使用的数据结构是()。
A. 栈B. 队列C. 链表D. 数组5. 哈希表的冲突可以通过多种方式解决,以下哪种不是解决冲突的方法?()A. 开放寻址法B. 链地址法C. 线性探测法D. 排序法6. 一个完全二叉树共有700个节点,它的最大节点数是()。
A. 700B. 701C. 1400D. 14017. 快速排序算法的最坏情况发生在()。
A. 每次选择的基准都是最大值B. 数据已经有序C. 数据已经完全逆序D. 所有数据元素相等8. 在一个具有n个节点的二叉搜索树中,最坏情况下查找一个元素的时间复杂度是()。
A. O(n)B. O(log n)C. O(n^2)D. O(1)9. 堆排序算法中,将一个堆调整为最大堆或最小堆的过程称为()。
A. 堆调整B. 堆构建C. 堆分解D. 堆维护10. 以下哪个不是B树的特性?()A. 所有键值都存储在内部节点和叶子节点中B. 所有叶子节点都在同一层上C. 每个内部节点至多有m个子节点D. 每个内部节点的非叶子子节点都至少有m/2个子节点二、简答题(每题5分,共30分)1. 什么是递归?请举例说明递归算法的应用场景。
2. 请简述图的邻接矩阵和邻接表两种存储方式的优缺点。
3. 解释什么是平衡二叉树,并说明它为什么在实际应用中很重要。
数据结构与算法分析考试试题

数据结构与算法分析考试试题一、选择题(共 20 小题,每小题 3 分,共 60 分)1、在一个具有 n 个元素的顺序表中,查找一个元素的平均时间复杂度为()A O(n)B O(logn)C O(nlogn)D O(n²)2、以下数据结构中,哪一个不是线性结构()A 栈B 队列C 二叉树D 线性表3、一个栈的入栈序列是 1,2,3,4,5,则栈的不可能的出栈序列是()A 5,4,3,2,1B 4,5,3,2,1C 4,3,5,1,2D 1,2,3,4,54、若一棵二叉树的先序遍历序列为 ABCDEFG,中序遍历序列为CBDAEGF,则其后序遍历序列为()A CDBGFEAB CDBFGEAC CDBAGFED BCDAGFE5、具有 n 个顶点的无向完全图的边数为()A n(n 1)B n(n 1) / 2C n(n + 1) / 2D n²6、以下排序算法中,在最坏情况下时间复杂度不是O(n²)的是()A 冒泡排序B 选择排序C 插入排序D 快速排序7、在一个长度为 n 的顺序表中,删除第 i 个元素(1≤i≤n)时,需要向前移动()个元素。
A n iB iC n i + 1D n i 18、对于一个具有 n 个顶点和 e 条边的有向图,其邻接表表示中,所有顶点的边表中边的总数为()A eB 2eC e/2D n(e 1)9、以下关于哈夫曼树的描述,错误的是()A 哈夫曼树是带权路径长度最短的二叉树B 哈夫曼树中没有度为 1 的节点C 哈夫曼树中两个权值最小的节点一定是兄弟节点D 哈夫曼树中每个节点的权值等于其左右子树权值之和10、用邻接矩阵存储一个具有 n 个顶点的无向图时,矩阵的大小为()A nB n²C (n 1)²D (n + 1)²11、下列关于堆的描述,正确的是()A 大根堆中,每个节点的值都大于其左右子节点的值B 小根堆中,每个节点的值都小于其左右子节点的值C 堆一定是完全二叉树D 以上都对12、在一个具有 n 个单元的顺序存储的循环队列中,假定 front 和rear 分别为队头指针和队尾指针,则判断队满的条件是()A (rear + 1) % n == frontB (front + 1) % n == rearC rear == frontD rear == 013、已知一个图的邻接表如下所示,从顶点 1 出发,按深度优先搜索法进行遍历,则得到的一种可能的顶点序列为()|顶点|邻接顶点|||||1|2, 3||2|4, 5||3|5||4|6||5|6||6| |A 1, 2, 4, 6, 5, 3B 1, 2, 5, 3, 4, 6C 1, 2, 3, 5, 4, 6D 1, 3, 2, 4, 5, 614、对线性表进行二分查找时,要求线性表必须()A 以顺序方式存储,且元素按值有序排列B 以顺序方式存储,且元素按值无序排列C 以链式方式存储,且元素按值有序排列D 以链式方式存储,且元素按值无序排列15、以下算法的时间复杂度为 O(nlogn)的是()A 顺序查找B 折半查找C 冒泡排序D 归并排序16、若某链表最常用的操作是在最后一个节点之后插入一个节点和删除最后一个节点,则采用()存储方式最节省时间。
数据结构与算法复习题库含答案

数据结构与算法复习题库含答案1. 问题描述:给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。
答案:可以使用哈希表来解决此问题。
首先初始化一个空的哈希表,然后遍历数组中的每个元素。
对于每个元素,首先计算目标值与当前元素的差值,然后在哈希表中查找该差值。
如果找到了该差值,则说明存在两个数的和等于目标值,返回这两个数的下标;否则,将当前元素插入到哈希表中。
时间复杂度为O(n),其中n为数组的长度。
2. 问题描述:给定一个字符串,找出其中不含重复字符的最长子串的长度。
答案:可以使用滑动窗口来解决此问题。
维护一个窗口,其中包含没有重复字符的子串。
遍历字符串中的每个字符,如果该字符不在窗口中,将其加入窗口;如果该字符在窗口中,移动窗口的左边界直到窗口中不包含重复字符。
记录窗口的最大长度。
时间复杂度为O(n),其中n为字符串的长度。
3. 问题描述:给定一个字符串和一个单词列表,找出字符串中可以由单词列表中的单词组成的所有子串的起始位置。
答案:可以使用滑动窗口和哈希表来解决此问题。
首先统计单词列表中每个单词的出现次数。
然后遍历字符串中的每个位置作为子串的起始位置,维护一个滑动窗口。
在窗口中依次取出长度和单词列表中单词总长度相等的子串,在哈希表中统计子串中每个单词出现的次数。
如果窗口中的子串与单词列表中的单词出现次数一致,则记录该子串的起始位置。
时间复杂度为O(n*m),其中n为字符串的长度,m为单词列表中的单词个数。
4. 问题描述:给定一个无序的整数数组,找出其中缺失的第一个正整数。
答案:可以使用原地哈希表来解决此问题。
遍历数组中的每个元素,将每个正整数放到数组中对应的位置上。
遍历数组中的每个元素,如果该位置上的数不等于数组索引加一,则该索引加一即为缺失的第一个正整数。
时间复杂度为O(n),其中n为数组的长度。
5. 问题描述:给定一个字符串s,找到s中最长的回文子串。
答案:可以使用动态规划来解决此问题。
数据结构与算法复习题库含答案

数据结构复习题第一章概论一、选择题1、研究数据结构就是研究( D )。
A. 数据的逻辑结构B. 数据的存储结构C. 数据的逻辑结构和存储结构D. 数据的逻辑结构、存储结构及其基本操作2、算法分析的两个主要方面是( A )。
A. 空间复杂度和时间复杂度 B. 正确性和简单性C. 可读性和文档性 D. 数据复杂性和程序复杂性3、具有线性结构的数据结构是( D )。
A. 图B. 树C. 广义表D. 栈4、计算机中的算法指的是解决某一个问题的有限运算序列,它必须具备输入、输出、( B )等5个特性。
A. 可执行性、可移植性和可扩充性B. 可执行性、有穷性和确定性C. 确定性、有穷性和稳定性D. 易读性、稳定性和确定性5、下面程序段的时间复杂度是( C )。
fori0;im;i++forj0;jn;j++a[i][j]i*j;A. Om2B. On2C. Om*nD. Om+n6、算法是( D )。
A. 计算机程序B. 解决问题的计算方法C. 排序算法D. 解决问题的有限运算序列7、某算法的语句执行频度为(3n+nlog2n+n2+8),其时间复杂度表示( C )。
A. OnB. Onlog2nC. On2D. Olog2n8、下面程序段的时间复杂度为( C )。
i1;whileinii*3;A. OnB. O3nC. Olog3nD. On39、数据结构是一门研究非数值计算的程序设计问题中计算机的数据元素以及它们之间的( B )和运算等的学科。
A. 结构B. 关系C. 运算D. 算法10、下面程序段的时间复杂度是( A )。
is0;whilesni++;s+i;A. OnB. On2C. Olog2nD. On311、抽象数据类型的三个组成部分分别为( A )。
A. 数据对象、数据关系和基本操作B. 数据元素、逻辑结构和存储结构C. 数据项、数据元素和数据类型D. 数据元素、数据结构和数据类型12、通常从正确性、易读性、健壮性、高效性等4个方面评价算法的质量,以下解释错误的是(D)。
数据结构与算法期末考试题及答案

数据结构与算法期末考试题及答案一、选择题1. 用于分离由加权无向边组成的完全连通图中连通分量中不相邻顶点的单纯形算法是(C)A. 最小生成树算法B. 广度优先搜索算法C. 最大流算法D. 关键路径算法2. 要设计一个使用图来表示的行业里的公司的决策问题,图的顶点应该表示(B)A. 公司拥有的资源B. 公司所面对的决策选择C. 公司内部的组织结构D. 公司的竞争对手3. 算法的计算时间复杂度O(log2n)中的n表示(A)A. 求解问题规模B. 求解算法所处理的数据量C. 求解问题中所涉及的参数量D. 求解算法所进行的求解步骤4. 以树形结构存储的优先队列中元素出队的操作时间复杂度是(C)A. O(1)B. O(n)C. O(log2n)D. O(n2)5. 以下关于贝尔曼-福特算法的描述错误的是(A)A. 贝尔曼-福特算法是求图 G=(V,E)最小生成树的法B. 贝尔曼-福特算法克服了Prim算法因存储顶点增量重复而带来的内存浪费C. 求解过程中,要维护贝尔曼-福特树中任意两个顶点之间的最短距离D. 贝尔曼-福特算法可以解决单源最短路径问题二、简答题1. 请说明拓扑排序的概念,以及如何使用拓扑排序解决求解关键路径的问题。
拓扑排序是指对有向无环图进行排序,得到一个顶点的线性序列,使得对于图中的每条有向边(u,v),均有u在v之前。
拓扑排序可用于求解关键路径,首先对所有活动按照拓扑排序的方法进行排序,计算该活动的最早开始时间ESi和最晚开始时间LSi,若ESi=LSi,则此活动运行期间不能延迟,为关键活动;若ESi≠LSi,则此活动可以合理推迟,不为关键活动。
算法与数据结构期末考试卷

算法与数据结构期末考试卷一、选择题(每题2分,共20分)1. 在数据结构中,线性表的顺序存储结构被称为:A. 链表B. 栈C. 队列D. 数组2. 快速排序算法的时间复杂度在最坏情况下是:A. O(n)B. O(n log n)C. O(n^2)D. O(log n)3. 哈希表解决冲突最常用的方法是:A. 链地址法B. 线性探测法C. 二次探测法D. 双重哈希法4. 二叉树的遍历方式不包括:A. 前序遍历B. 中序遍历C. 后序遍历D. 广度优先遍历5. 堆排序算法是基于:A. 链表B. 栈C. 队列D. 堆...(此处省略其他选择题)二、简答题(每题10分,共20分)1. 请简述二叉搜索树与普通二叉树的区别。
2. 什么是递归?请举例说明递归在算法中的应用。
三、编程题(每题15分,共30分)1. 编写一个函数,实现对链表的反转。
2. 编写一个函数,实现快速排序算法。
四、综合应用题(每题15分,共30分)1. 描述如何使用哈希表实现一个简单的数据库索引系统。
2. 假设你有一个数组,其中包含了一些重复的数值,请编写一个算法来找出数组中出现次数超过数组长度一半的数值。
五、论述题(每题15分,共15分)1. 论述动态规划与贪心算法的区别,并给出一个动态规划问题的例子。
六、附加题(10分,可选做)1. 请设计一个算法,用于检测一个字符串是否是回文。
如果字符串是回文,请返回True,否则返回False。
注意:本试卷中所有题目的答案必须以书面形式给出,编程题需要提供完整的代码实现。
祝各位考生考试顺利,取得优异成绩。
(完整版)数据结构复习题(附答案)

(完整版)数据结构复习题(附答案)⼀、算法设计题(每题15分,共60分)答题要求:①⽤⾃然语⾔说明所采⽤算法的思想;②给出每个算法所需的数据结构定义,并做必要说明;③写出对应的算法程序,并做必要的注释。
1、有⼀个带头结点的单链表,每个结点包括两个域,⼀个是整型域info,另⼀个是指向下⼀个结点的指针域next。
假设单链表已建⽴,设计算法删除单链表中所有重复出现的结点,使得info域相等的结点只保留⼀个。
3、约瑟夫环问题(Josephus问题)是指编号为1、2、…,n的n(n>0)个⼈按顺时针⽅向围坐成⼀圈,现从第s个⼈开始按顺时针⽅向报数,数到第m个⼈出列,然后从出列的下⼀个⼈重新开始报数,数到第m的⼈⼜出列,…,如此重复直到所有的⼈全部出列为⽌。
现要求采⽤循环链表结构设计⼀个算法,模拟此过程。
4、编程实现单链表的就地逆置。
23.在数组 A[1..n]中有n个数据,试建⽴⼀个带有头结点的循环链表,头指针为h,要求链中数据从⼩到⼤排列,重复的数据在链中只保存⼀个.5、设计⼀个尽可能的⾼效算法输出单链表的倒数第K个元素。
3、假设以I和O分别表⽰⼊栈和出栈操作。
栈的初态和终态均为空,⼊栈和出栈的操作序列可表⽰为仅由I和O组成的序列,称可以操作的序列为合法序列,否则称为⾮法序列。
(15分)(1)下⾯所⽰的序列中哪些是合法的?A. IOIIOIOOB. IOOIOIIOC. IIIOIOIOD. IIIOOIOO(2)通过对(1)的分析,写出⼀个算法,判定所给的操作序列是否合法。
若合法,返回true,否则返回false(假定被判定的操作序列已存⼊⼀维数组中)。
5、设从键盘输⼊⼀整数的序列:a1, a2, a3,…,an,试编写算法实现:⽤栈结构存储输⼊的整数,当ai≠-1时,将ai进栈;当ai=-1时,输出栈顶整数并出栈。
算法应对异常情况(⼊栈满等)给出相应的信息。
设有⼀个背包可以放⼊的物品重量为S,现有n件物品,重量分别为W1,W2,...,W n。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据结构与算法分析-六套期末复习题(含答案)试题一一、单项选择题(每小题2分,共20分)(1)以下数据结构中哪一个是线性结构?()A)有向图B)队列C)线索二叉树D)B树(2)在一个单链表HL中,若要在当前由指针p指向的结点后面插入一个由q指向的结点,则执行如下()语句序列。
A)p=q; p->next=q; B)p->next=q; q->next=p;C)p->next=q->next; p=q; D)q->next=p->next; p->next=q;(3)()不是队列的基本运算。
A)在队列第i个元素之后插入一个元素 B)从队头删除一个元素C)判断一个队列是否为空D)读取队头元素的值(4)字符A、B、C依次进入一个栈,按出栈的先后顺序组成不同的字符串,至多可以组成()个不同的字符串。
A)14 B)5 C)6 D)8(5)由权值分别为3,8,6,2的叶子生成一棵哈夫曼树,它的带权路径长度为()。
A)11 B)35 C)19 D)53以下6-8题基于下图:(6)该二叉树结点的前序遍历的序列为()。
A)E、G、F、A、C、D、B B)E、A、G、C、F、B、DC)E、A、C、B、D、G、F D)E、G、A、C、D、F、B(7)该二叉树结点的中序遍历的序列为()。
A)A、B、C、D、E、G、F B)E、A、G、C、F、B、DC)E、A、C、B、D、G、F D)B、D、C、A、F、G、E(8)该二叉树的按层遍历的序列为()。
A)E、G、F、A、C、D、B B)E、A、C、B、D、G、FC)E、A、G、C、F、B、D D)E、G、A、C、D、F、B(9)下面关于图的存储的叙述中正确的是()。
A)用邻接表法存储图,占用的存储空间大小只与图中边数有关,而与结点个数无关B)用邻接表法存储图,占用的存储空间大小与图中边数和结点个数都有关C)用邻接矩阵法存储图,占用的存储空间大小与图中结点个数和边数都有关D)用邻接矩阵法存储图,占用的存储空间大小只与图中边数有关,而与结点个数无关(10)设有关键码序列(q,g,m,z,a,n,p,x,h),下面哪一个序列是从上述序列出发建堆的结果?()A)a,g,h,m,n,p,q,x,z B)a,g,m,h,q,n,p,x,zC)g,m,q,a,n,p,x,h,z D)h,g,m,p,a,n,q,x,z二、(本题8分)对于序列{8,18,6,16,29,28},试写出堆顶元素最小的初始堆。
三、(本题8分)一棵二叉树的先序、中序和后序序列分别如下,其中有一部分未显示出来。
试求出空格处的内容,并画出该二叉树。
先序序列: B F ICEH G中序序列:D KFIA EJC后序序列:K FBHJ G A四、(每小题2分,共8分)设有序列:w={23,24,27,80,28},试给出:(1)二叉排序树;(2)哈夫曼树;(3)平衡二叉树;(4)对于增量d=2按降序执行一遍希尔排序的结果。
五、(本题15分)假设二叉树中每个结点所含数据元素均为单字母,以二叉链表为存储结构,试编写算法按如下图所示的树状显示二叉树。
【答案】==================================一、单项选择题(1)B (2)D (3)A (4)B (5)B(6)C (7)A (8)C (9)B (10)B二、(本题8分)所构造的堆如下图所示:三、(本题8分)在先序序列空格中依次填ADKJ,中序中依次填BHG,后序中依次填DIEC。
四、(每小题2分,共8分)(1)二叉排序树如下图所示:(2)哈夫曼树如下图所示:(3)平衡二叉树如下图所示:(4)对于增量d=2按降序执行一遍希尔排序的结果:28,80,27,24,23 五、(本题15分)从上图来看,二叉树的第一层显示在第一列,第二层显示在第二列,第三层显示在第三列;每行显示一个结点,从上至下是先显示右子树,再显示根,最后最左子树,也就是以先遍历右子树,最后遍历左子树的中序遍历次序显示各结点。
C 语言版测试程序见exam1\10c ,具体算当如下:void DisplayBTWithTreeShape(BiTree T,int level=1) // 按树状形式显示二叉树,level 为层次数,可设根结点的层次数为1{ if(T) { //空树不显式,只显式非空树DisplayBTWithTreeShape(T->rchild,level+1); //显示右子树 cout<<endl;//显示新行for(int i=0;i<level-1;i++)cout<<" ";//确保在第level 列显示结点cout<<T->data; //显示结点DisplayBTWithTreeShape(T->lchild,level+1); //显示左子树}}==================================================================== =====试题二一、单项选择题(每小题2分,共20分)(1)设Huffman树的叶子结点数为m,则结点总数为()。
A)2m B)2m-1C)2m+1 D)m+1(2)若顺序存储的循环队列的QueueMaxSize=n,则该队列最多可存储()个元素。
A)n B)n-1C)n+1 D)不确定(3)下述哪一条是顺序存储方式的优点?()A)存储密度大B)插入和删除运算方便C)获取符合某种条件的元素方便D)查找运算速度快(4)设有一个二维数组A[m][n],假设A[0][0]存放位置在600(10),A[3][3]存放位置在678(10),每个元素占一个空间,问A[2][3](10)存放在什么位置?(脚注(10)表示用10进制表示,m>3)()。
A)658 B)648 C)633 D)653(5)下列关于二叉树遍历的叙述中,正确的是()。
A)若一个叶子是某二叉树的中序遍历的最后一个结点,则它必是该二叉树的前序遍历最后一个结点B)若一个结点是某二叉树的前序遍历最后一个结点,则它必是该二叉树的中序遍历的最后一个结点C)若一个结点是某二叉树的中序遍历的最后一个结点,则它必是该二叉树的前序最后一个结点D)若一个树叶是某二叉树的前序最后一个结点,则它必是该二叉树的中序遍历最后一个结点(6)k层二叉树的结点总数最多为()。
A)2k-1B)2k+1 C)K-1 D)k-1(7)对线性表进行二分法查找,其前提条件是()。
A)线性表以链接方式存储,并且按关键码值排好序B)线性表以顺序方式存储,并且按关键码值的检索频率排好序C)线性表以顺序方式存储,并且按关键码值排好序D)线性表以链接方式存储,并且按关键码值的检索频率排好序(8)对n个记录进行堆排序,所需要的辅助存储空间为()。
A)O(1og2n) B)O(n)C)O(1) D)O(n2)(9)对于线性表(7,34,77,25,64,49,20,14)进行散列存储时,若选用H(K)=K%7作为散列函数,则散列地址为0的元素有()个。
A)1 B)2 C)3 D)4(10)下列关于数据结构的叙述中,正确的是()。
A)数组是不同类型值的集合B)递归算法的程序结构比迭代算法的程序结构更为精炼C)树是一种线性结构D)用一维数组存储一棵完全二叉树是有效的存储方法二、(本题8分)假定一棵二叉树广义表表示为a(b(c),d(e,f)),分别写出对它进行先序、中序、后序、按层遍历的结果。
三、(本题8分)树有哪些遍历方法?它们分别对应于把树转变为二叉树的哪些遍历方法?四、(本题8分)设有数组A[-1:3,0:6,-2:3],按行为主序存放在2000开始的连续空间中,如元素的长度是5,试计算出A[1,1,1]的存储位置。
五、(本题8分)设有一个输入数据的序列是{ 46, 25, 78, 62, 12, 80 }, 试画出从空树起,逐个输入各个数据而生成的二叉搜索树。
六、(本题15分)以二叉链表作存储结构,试编写计算二叉树中叶子结点数目的递归算法。
【答案】==================================一、单项选择题(每小题2 分,共20分)(1)B (2)B (3)A (4)D (5)A(6)A (7)C (8)C (9)D (10)D二、(本题8分)先序:a,b,c,d,e,f中序:c,b,a,e,d,f后序:c,b,e,f,d,a按层:a,b,d,c,e,f遍历序列为:abedc。
三、(本题8分)树的遍历方法有先根序遍历和后根序遍历,它们分别对应于把树转变为二叉树后的先序遍历与中序遍历方法。
四、(本题8分)A[1,1,1]的存储位置=2000+((1-(-1))*(6-0+1)*(3-(-2)+1)+(1-0)*(3-(-2)+1)+(1-(-2)))*5=2465。
五、(本题8分)六、(本题15分)本题只要在遍历二叉树的过程序中对叶子结点进行记数即可。
C语言版测试程序见exam2\10c,具体算当如下:long LeafCount(BiTree T)// 计算二叉树中叶子结点数目{if(T==NULL)return 0; //空树返回0else if(T->lchild==NULL&&T->rchild==NULL)return 1; //只有一个结点的树返回1else//叶子结点数为左右子树的叶子结点数之和return LeafCount(T->lchild)+LeafCount(T->rchild);}试题三一、单项选择题(每小题2分,共20分)(1)对一个算法的评价,不包括如下()方面的内容。
A)健壮性和可读性B)并行性C)正确性D)时空复杂度(2)在带有头结点的单链表HL中,要向表头插入一个由指针p指向的结点,则执行()。
A)p->next=HL->next; HL->next=p B)p->next=HL; HL=pC)p->next=HL; p=HL D)HL=p; p->next=HL(3)对线性表,在下列哪种情况下应当采用链表表示?()A)经常需要随机地存取元素B)经常需要进行插入和删除操作C)表中元素需要占据一片连续的存储空间D)表中元素的个数不变(4)一个栈的输入序列为1 2 3,则下列序列中不可能是栈的输出序列的是()。
A)2 3 1 B)3 2 1 C)3 1 2 D)1 2 3(5)每一趟都能选出一个元素放在其最终位置上,并且不稳定的排序算法是()。
A)冒泡排序B)简单选择排序C)希尔排序D)直接插入排序(6)采用开放定址法处理散列表的冲突时,其平均查找长度()。