当前位置: 首页 > news >正文

2012年408考研真题-数据结构

8.【2012统考真题】求整数n(n≥0)的阶乘的算法如下,其时间复杂度是()。

int fact(int n){

if(n<=1) return 1;

return n*fact (n-1);

}

A. O(log2n)        B. O(n)        C. O(nlog2n)        D. O(n^2)

解析:

观察代码,我们不难发现使用了递归调用。递归调用要找出口,也就是跳出递归的条件。

本题跳出递归的条件是n=1;从fact(n)不断地往下递归知道fact(1),在这过程中,总共执行了n次,时间复杂度为O(n).

11.【2012统考真题】已知操作符包括“+”、“-”、“*”、“/”、“(”和“)”。将中缀表达式a+b-a*((c+d)/e-f)+g转换为等价的后缀表达式ab+acd+e/f-*-g+时,用栈来存放暂时还不能确定运算次序的操作符。栈初始时为空时,转换过程中同时保存在栈中的操作符的最大个数是(A)。A.5        B.7        C.8        D.11

解析:

a输出,+存入栈内,b输出,操作符进栈讲究一个够强才进,-和+是平级的,只能让+先输出出来,-再进去,这时候栈内的存的个数任然是1个。

接下来是a,输出a,然后是*,*够强存入栈中,接着是((够强,存入栈中,输出c,接下来是+,此时栈里面最上层是(,所以+也存入栈内,此时栈内存的操作符个数是5个了。

接着输出d,然后是),)仍爱着(,它俩要私奔,所以栈内+输出,(输出,接着是/,/直接进入栈内,接下来直接输出字母e,接着是-,因为此时栈内是/号,/号更强,-不能直接进,让/直接输出,-进入,然后是f,输出f,接着是),因为要私奔,栈内输出-和(,然后是+,此时栈顶是*,需要先将*输出,再让+进入,此时栈内存过的最大的个数是5个,选A。

30.[2012统考真题]若一棵二叉树的前序遍历序列为 a,e,b,d.c.后序遍历序列为 b.c.d,e,a,则根结点的孩子结点()。

A.只有e        B.有 e、b        C.有e、c        D.无法确定

解析:

前序遍历序列:根左右。

后序遍历序列:左右根。

前序遍历序列第一个是a,a是根结点,但是在后序遍历序列中a是最后一个。

以下面这个例子来看,作为根结点A的两个孩子,结点B和C在前序遍历中是ABC,

在后序遍历中是BCA,不管是前序还是后序他们的相对位置是不变的。

带着这样一个结论来看这道题:

因为前序遍历第二个结点e,

假设如果有左孩子,那左孩子的根结点一定是e。

假设如果没有左孩子,那右子树的根结点一定也是e。

也就是说根结点的孩子结点必有e。

假设根结点的孩子结点有两个,则这两个孩子结点在前序遍历序列和后序遍历序列中的相对位置是不变的。

看B选项,e和b在前序遍历序列中是e在前b在后,在后序遍历序列中是b在前e在后。

相对位置变了,b不是根结点的叶子结点。B错

同理可以证明B错,C错。

20.[2012统考真题]若平衡二叉树的高度为 6,且所有非叶子结点的平衡因子均为1,则该平衡二叉树的结点总数为(B)。

A.12        B.20        C.32        D.33

解析:

平衡因子:左右子树的高度之差。

我们不难得出这样一个结论:对于一个所有非叶子结点的平衡因子都为1,且高度为h的平衡二叉树,它的结点总数为高度为h-1和h-2的同类树的结点总数再+1;

如何h=3的结点个数是树高为1+树高为2的同类树的结点个数再+1;

我们接着算出h=4,h=5,h=6时的结点个数。

h=4 : 2+4+1=7

h=5 : 4+7+1=12

h=6  :   7+12+1=20 

算出答案:20选B

14.对有n个顶点、e条边且使用邻接表存储的有向图进行广度优先遍历,其算法的时间复杂度是)。

A.O(n)        B. O(e)        C.O(n+e)        D. O(ne)

解析:

对有n个顶点、e条边的有向图,不管是BFS广度优先遍历还是DFS深度优先遍历,它的时间复杂度都和使用的存储方式有关。

使用邻接表存储方式的,时间复杂度是O(n+e)

使用邻接矩阵存储的,时间复杂度是O(n^{2})

21.【2012统考真题】若用邻接矩阵存储有向图,矩阵中主对角线以下的元素均为零,则关于该图拓扑序列的结论是()。

A.存在,且唯一

B.存在,且不唯一

C.存在,可能不唯一

D.无法确定是否存在

解析:

,由图可知,只有当i<j时存在边。

且只存在0-1,0-2,0-3,1-2,1-3的边,不存在回路,也就没有环。

那这就是一个无环图。

有向无环图是存在拓扑序列的,所以D错

拓扑序列在图1:是不唯一的。

在图二:是唯一的。

答案选C。

19.【2012统考真题】对下图所示的有向带权图,若采用Dijkstra算法求从源点a到其他各顶点的最短路径,则得到的第一条最短路径的目标顶点是b,第二条最短路径的目标顶点是c,后续得到的其余各最短路径的目标顶点依次是()。

A.d,e,f        B.e,d,f        C.f,d,e        D.f,e,d

解析:

18.【2012统考真题】下列关于最小生成树的叙述中,正确的是(A)。

I.最小生成树的代价唯一。

II.所有权值最小的边一定会出现在所有的最小生成树中。

III.使用Prim算法从不同顶点开始得到的最小生成树一一定相同。

Ⅳ.使用Prim算法和Kruskal算法得到的最小生成树总不相同。

A.仅I        B.仅Ⅱ        C.仅I、Ⅲ        D.仅Ⅱ、Ⅳ

解析:

生成树的代价最小才能称为最小生成树,因此代价一定是唯一的。I对。

II不一定,以下图为例:

使用prim算法得到的结果不唯一,因为一个点如果几条边的权值都是一样的话,那它就有几条路线选择的可能性,因此不唯一,生成的最小生成树肯定不是唯一相同的。III错。

如果连通图的最小生成树是唯一的,那么不管用什么算法都是唯一的一种。Ⅳ错。

12.【2012统考真题】已知一棵3阶B树,如下图所示。删除关键字78得到一棵新B树,其最右叶结点中的关键字是(D)。

A.60        B.60, 62        C.62, 65        D.65

解析:78去掉后,需要找一个新的元素添上,这里直接找它的前驱65,然后62填补上65的空缺。所以最右边叶子结点中的关键字是65。

10.【2012统考真题】在内部排序过程中,对尚未确定最终位置的所有元素进行一遍处理称为一趟排序。下列排序方法中,每趟排序结束都至少能够确定一个元素最终位置的方法是()。

 I.简单选择排序

Ⅱ.希尔排序

Ⅲ.快速排序

Ⅳ.2路归并排序

V.堆排序

A.仅I、Ⅲ、Ⅳ

B.仅I、Ⅲ、V

C.仅II、Ⅲ、Ⅳ

D.仅Ⅲ、Ⅳ、V

解析:

 I.简单选择排序:每次都能在待排的队列中选出一个最小或者最大的出现在头或尾。I是对的。

Ⅱ.希尔排序:举一个反例:

Ⅲ.快速排序,每趟排序过后,这个数左边的全小于它,右边的数全大于它,能确定位置。
Ⅳ.堆排序:前面的能确定比这个数小,后面的能确定比这个数大。堆排序能确定位置。

V.2路归并排序:

举一个反例:

4321

3412

1234

2路归并排序不能确定最终位置。

16.【2012统考真题】对同一待排序序列分别进行折半插入排序和直接插入排序,两者之间可能的不同之处是()。

A.排序的总趟数

B.元素的移动次数

C.使用辅助空间的数量

D.元素之间的比较次数

解析:

折半插入排序是在直接插入排序的基础上,在将数插入到已排序的过程中,使用了折半查找的思想,折半查找显然能大幅度减少元素的比较次数。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 重生之我在Java世界------学单例设计模式
  • 智谱清影 -CogVideoX-2b-部署与使用,带你揭秘生成6s视频的极致体验!
  • 正点原子阿尔法ARM开发板-IMX6ULL(七)——BSP工程管理实验(补:链接文件和.s文件)
  • 阅信云CTO向永清:35岁不应该成为技术职业发展的瓶颈|OceanBase 《DB大咖说》
  • 比backtrader还简单的量化回测框架,bt的使用方式以及示例
  • SpringCache
  • 简明linux系统编程--共享内存消息队列信号量
  • Chainlit集成Langchain并使用通义千问实现和数据库交互的网页对话应用增强扩展(text2sql)
  • 8.sklearn-模型保存
  • VirtualBox7.1.0 安装 Ubuntu22.04.5 虚拟机
  • @JsonFormat 和 @DateTimeFormat 的区别
  • JavaScript substring() 方法
  • Redisson 分布式锁的使用详解
  • 将有序数组——>二叉搜索树
  • Leetcode 3290. Maximum Multiplication Score
  • 08.Android之View事件问题
  • CSS 专业技巧
  • gitlab-ci配置详解(一)
  • HTML5新特性总结
  • iBatis和MyBatis在使用ResultMap对应关系时的区别
  • Java多态
  • Linux编程学习笔记 | Linux IO学习[1] - 文件IO
  • mysql中InnoDB引擎中页的概念
  • Python3爬取英雄联盟英雄皮肤大图
  • vue脚手架vue-cli
  • Vue小说阅读器(仿追书神器)
  • Web设计流程优化:网页效果图设计新思路
  • 阿里云购买磁盘后挂载
  • 安装python包到指定虚拟环境
  • 飞驰在Mesos的涡轮引擎上
  • 关于 Cirru Editor 存储格式
  • 买一台 iPhone X,还是创建一家未来的独角兽?
  • 猫头鹰的深夜翻译:Java 2D Graphics, 简单的仿射变换
  • 日剧·日综资源集合(建议收藏)
  • 如何使用Mybatis第三方插件--PageHelper实现分页操作
  • 手写一个CommonJS打包工具(一)
  • 腾讯视频格式如何转换成mp4 将下载的qlv文件转换成mp4的方法
  • 用Python写一份独特的元宵节祝福
  • Semaphore
  • 阿里云服务器购买完整流程
  • 阿里云移动端播放器高级功能介绍
  • ​DB-Engines 12月数据库排名: PostgreSQL有望获得「2020年度数据库」荣誉?
  • # Java NIO(一)FileChannel
  • # MySQL server 层和存储引擎层是怎么交互数据的?
  • # wps必须要登录激活才能使用吗?
  • #Js篇:单线程模式同步任务异步任务任务队列事件循环setTimeout() setInterval()
  • #Ubuntu(修改root信息)
  • (1)常见O(n^2)排序算法解析
  • (9)STL算法之逆转旋转
  • (HAL)STM32F103C6T8——软件模拟I2C驱动0.96寸OLED屏幕
  • (Java入门)抽象类,接口,内部类
  • (二)PySpark3:SparkSQL编程
  • (附源码)node.js知识分享网站 毕业设计 202038
  • (附源码)springboot青少年公共卫生教育平台 毕业设计 643214
  • (附源码)ssm跨平台教学系统 毕业设计 280843