首页 > 其他分享 >15年408-数据结构

15年408-数据结构

时间:2024-09-24 13:21:51浏览次数:10  
标签:解析 15 元素 个数 v3 二叉树 序列 数据结构 408

第一题

解析:

栈第一次应该存main的信息。

然后进入到main里面,要输出S(1),将S(1)存入栈内,

进入到S(1)中,1>0,所以还要调用S(0)

S(0)进入栈中,此时栈内从下至上依次是main(),S(1),S(0)

答案选A

第二题:

解析:

先序序列个数为0时,二叉树个数是1:

先序序列个数为1时,二叉树个数是1:

先序序列个数为2时,二叉树个数是2:

先序序列个数为3时,二叉树个数是5:

先序序列个数为4时,二叉树个数是5+2+2+5=14:

第三题:

解析:

A:A错

B:B错

C:C错

答案选D

第四题:

解析:

该题给的是一棵平衡二叉树,平衡二叉树的定义是:根节点的左右两个子树的高度之差不大于1,当插入一个元素之后,可能会使平衡二叉树失衡,这时候需要判断失衡的类型,有RR,RL,LL,LR四种类型,为了使二叉树重新保存平衡,在经过左旋,右旋等操作后,插入的叶子结点可能到了根节点的位置。例如:

,C错,

题目说对其进行中序遍历之后能得到一个降序序列,中序遍历是左根右,也就是说该二叉树最大的结点一定是位于最左边的叶子结点,该结点没有左子树,D对

当二叉树的结点个数是2个时,根节点的度是1,A错。

第五题:

解析:

直接画图,就能看出答案了,答案是5个,选D

第六题:

解析:

卡鲁斯卡尔算法(选边):选权值最小的边:权值为5

第一次选:(v1,v4)

第二次选:权值为8的点,(v1,v3),(v3,v4),(v2,v3)

普利姆算法(选点):第一次选:v1,v4这两个点。

第二次的选择:选择与v1,v4这两个点相连的点,并且这条边权值要最小,由观察可得,权值最小的是8;也就是(v1,v3)和(v3,v4)这两条边。

(v2,v3)不是普利姆算法第二次选择的边,答案选(v2,v3)

第七题:

解析:

使用折半查找二叉树可以很直观的看待这个问题:

A:180出现在了200的右子树中,显然错误。

第八题:

解析:

abaaba

abaabc

第六个字符出现匹配失败,i=j=5,说明字符串下标是从0开始的。

因为是最后一个字符c和a匹配失败的,前面都能匹配的上,也就是说前面都是确定的字符,只有最后一个字符是匹配不上的,是未知的,ab是确认的,且模式串开头也是ab,因此下一轮匹配我们直接可以从ab开始后比较第三个元素,此时j在T[2],i在S[5],这个用文字不太好描述,王道课直接用这个题讲的课,可以看一下王道的KMP课。

答案选C

第九题:

解析:

A.直接插入排序:每次将待排序的记录中一个元素,按其关键字的大小插入到前面已经排好序的序列中,直到所有记录插入完毕。以1,2,3,4,5为例,进行升序排序,

因为本来就是有序的,所以不需要将元素进行任何交换。

而如果元素的序列是5,4,3,2,1,进行升序排序时,则每插入一个元素都要与前面的元素进行交换位置。显然A错

B:起泡排序也叫冒泡排序,是将一个序列,从左到右或者从右到左,两两进行比较,如果是逆序,则交换位置,直到序列比较完成。

还是以1,2,3,4,5为例,不需要移动元素,而5,4,3,2,1需要移动元素。B错

C:基数排序:是按照个位,十位,百位,依次排的,和次序无关。C对

D:快速排序很经典的问题,时间复杂度最差的情况是有序序列:

时间复杂度最好的情况是:

显然有序的时候不用交换次序,无序的时候要进行多次比较,然后需要交换元素次序。

第十题:

解析:

先将这个小根堆构建出来:

删除8后,将最后一个元素12放上去根的位置,接着下火海。

小根堆是根比左右两个子树要小,所以先从左右两个子树当中找出最小的一个,15和10进行比较,得出10比较小,然后10在和12比较一次,得出10最小,10和12交换位置。

接着要保证,12小于左右两个子树,因此12要和16进行一次比较,12比16小,不用交换位置,得到新的小根堆,题目完成。

一共要进行3次比较。

第十一题:

解析:

组内就两个元素在比较,使用直接插入排序就好了,不用那么复杂,答案选A。

标签:解析,15,元素,个数,v3,二叉树,序列,数据结构,408
From: https://blog.csdn.net/weixin_62182040/article/details/142455962

相关文章

  • 计算机知识科普问答--15(71-75)
    文章目录71、操作系统中哪些操作会导致创建新进程?1.**用户登录**2.**启动新程序**3.**系统初始化**4.**父进程创建子进程**5.**执行批处理任务**6.**外部事件(定时器或设备驱动程序的请求)**7.**多线程环境中的线程创建**8.**操作系统命令或脚本的调......
  • COMPSCI 315 Web Server Workload Characterization
    WebServerWorkloadCharacterizationAssignment3and4,COMPSCI315Due:RefertothedeadlineonCanvas;SubmissionviaCanvas1IntroductionInternettrafficmeasurementinvolvescollectingnetworkdatathatcanbeanalyzedforseveralpurposessuchas......
  • 数据结构算法题
    目录轮转数组原地移除数组中所有元素val删除有序数组中的重复项合并两个有序数组轮转数组思路1:1.利用循环将最后一位数据放到临时变量(n)中2.利用第二层循环将数据往后移一位3.将变量(n)的数据放到数组第一位时间复杂度:O(N^2)空间复杂度:O(1)思路2:1.创建一个空间......
  • 数据结构:单链表
    单链表单链表概念与结构节点链表的性质单链表的打印实现单链表创建新的节点在末尾插入数据在头部插入数据删除尾部数据删除第一个节点在链表中寻找目标数据在指定位置之前插入数据在指定位置之后插⼊数据删除pos结点删除pos之后的结点销毁链表单链表测试单链表概念与......
  • 基础数据结构之链表
    链表1)概述定义在计算机科学中,链表是数据元素的线性集合,其每个元素都指向下一个元素,元素存储上并不连续Incomputerscience,alinkedlistisalinearcollectionofdataelementswhoseorderisnotgivenbytheirphysicalplacementinmemory.Instead,eachelem......
  • C语言结构体、指针和常见数据结构
    在学习C语言时,结构体、指针和常见的数据结构如链表、栈、队列、二叉树等,是绕不开的重点。本篇博客用通俗易懂的方式,介绍这些概念,结合简单的代码示例,带你逐步掌握这些基础知识。1.结构体和指针我们先来看一眼结构体和指针,不懂这些的话,下面的代码肯定看不懂,没学过......
  • 数据结构-线性表的单链式存储结构图解及C语言实现
    概念链式存储:结点在存储器中的位置是任意的,即逻辑相邻的数据元素在物理上不一定相邻链式存储结构也称非顺序映像或链式映像图解链式存储结构中结点一般有两个部分组成,即数据域(data)和指针域,数据域是用于存放数据的,指针域是用来指向下一结点的地址的,其中头节点指向该链表......
  • 【数据结构和算法实践-排序-归并排序】
    数据结构和算法实践-排序-归并排序题目MyThought代码示例JAVA-8题目排序MyThought然后再进行递归,递归要注意两个方面:一、自我调用二、终止条件:即函数边界注意点:树、递归*代码示例JAVA-8publicclassMergeSort{publicstaticvoidmergeSor......
  • 20240816
    MusicFestival我们设状态为当前的炫酷值为\(i\),则\(dp_i\)表示炫酷值,然后将每个专辑按照最大值排序即可#include<bits/stdc++.h>usingnamespacestd;constintN=2e5+5;structnode{vector<int>a;intmaxi;}x[N];intt,n,k[N],tr[N*4],p[N],c......
  • 数据结构线性表两种方式分享
    第一种方式为老师说的数组+结构体(课本上),我用的是c++,其实与c没什么不同(区别:cin是scanf,cout是print,new是malloc()函数),我用的全局变量,所以不用传参。代码1:点击查看代码#include<iostream>#include<cstring>usingnamespacestd;constintN=1e4+5;structss{ charname[......