中国大学MOOC-陈越、何钦铭-数据结构-2019春期末考试(题目+部分解答)

 欢迎评论(指正或是询问都可),谢谢大家

一、判断题

思路很正常的题目。

1-4反例:4个顶点只用3条边就可以做到全连通。所以边数可能等于顶点个数减一。错误。

 

二、选择题

 

 

2-8需要细心的做一下双旋操作,

 

 

2-12 C 

设数字 {4371, 1323, 6173, 4199, 4344, 9679, 1989} 在大小为10的散列表中根据散列函数 h(X)=X%10得到的下标对应为 {1, 3, 4, 9, 5, 0, 2}。那么继续用散列函数 “h(X)=X%表长”实施再散列并用线性探测法解决冲突后,它们的下标变为:(4分)

  1. 11, 3, 13, 19, 4, 0, 9
  2. 1, 3, 4, 9, 5, 0, 2
  3. 1, 12, 9, 13, 20, 19, 11
  4. 1, 12, 17, 0, 13, 8, 14

 

再散列即是double扩大原表长,使得loading factor(α)下降一半的过程。因为装载因子和期望查找长度有反相关的关系(参考数据结构第三版 散列性能分析章节的一张曲线图),所以降低α这样可以增加散列查找的效率。

本题中再散列后的表长应该是20,但是要取大于20的第一个素数,所以表长取23较适宜。所以选C,而不是A。

 

2-14 此题有争议 C、D 当初是看错选对的,看书上的意思应该选C? 求大佬指正。

 

 

 

2-20 三角不等式在图论中同样也适用,两边之和必定大于第三边。

2-21 图退化成线性表后,堆栈和队列的拓扑排序就相同。

 

 

三、程序填空题

++counter //TopNum starts counting from 1

--Indegree[W]

 

 

这个堆的应用很聪明,就是找出K个尽可能小的数字,再在其中选一个最大的数即为第K小的数。

建立了K个元素的大顶堆利用不等式的传递性质。如果一个数大于堆顶,那其必定大于堆顶以下的元素,那这个数至少是第K+1小的数(因为比K+1个数还大),所以在循环中直接跳过该数;如果一个数小于堆顶,则完成替换堆顶+调整最大堆的操作,使得最大堆里永远是较小的一堆数字。

 

 

四、编程题

7-1 根据后序和中序遍历输出先序遍历 (8 point(s))

本题要求根据给定的一棵二叉树的后序遍历和中序遍历结果,输出该树的先序遍历结果。

输入格式:

第一行给出正整数N(≤30),是树中结点的个数。随后两行,每行给出N个整数,分别对应后序遍历和中序遍历结果,数字间以空格分隔。题目保证输入正确对应一棵二叉树。

输出格式:

在一行中输出Preorder:以及该树的先序遍历结果。数字间有1个空格,行末不得有多余空格。

输入样例:

7
2 3 1 5 7 6 4
1 2 3 4 5 6 7

输出样例:

Preorder: 4 1 3 2 6 5 7

陈越老师一道讲过的课后习题

 

思路:

申请三个全局数组。PostOrder、InOrder、PreOrder。

依据PostOrder找到根节点后记录,查找InOrder中的根节点,把InOrder原序列划分成左右两个子序列;递归解决问题。

 

参考代码:

 1 #include <cstdio>
 2 #define MAXN 50
 3 
 4 int pre[MAXN], in[MAXN], post[MAXN];
 5 
 6 
 7 
 8 void InputPostAndIn(int N);
 9 void solve(int preL, int inL, int postL, int n);
10 void OutputPost(int N);
11 
12 int main()
13 {
14     int N; scanf("%d", &N);
15     InputPostAndIn(N);
16     solve(0, 0, 0, N);
17     OutputPost(N);
18 }
19 
20 void InputPostAndIn(int N)
21 {
22    
23     for (int i=0; i<N; i++) {
24         scanf("%d", &post[i]);
25     }
26     for (int i=0; i<N; i++) {
27         scanf("%d", &in[i]);
28     }
29     
30 }
31 
32 void solve(int preL, int inL, int postL, int Num)
33 {
34     if (Num == 0) {
35         return;
36     }
37    
38     int root, i, LTreeNodeNum, RTreeNodeNum;
39     root = post[postL + Num - 1];
40     pre[preL] = root;
41     
42     for (i=inL; in[i]!=root; i++) {}
43     
44     LTreeNodeNum = i - inL; RTreeNodeNum = Num - LTreeNodeNum - 1;
45     
46     solve(preL+1, inL, postL, LTreeNodeNum);
47     solve(preL+1+LTreeNodeNum, inL+1+LTreeNodeNum, postL + LTreeNodeNum, RTreeNodeNum);
48 }
49 
50 void OutputPost(int N)
51 {
52     printf("Preorder: ");
53     printf("%d", pre[0]);
54     for (int i=1; i<N; i++) {
55         printf(" %d", pre[i] );
56     }
57     printf("\n");
58 }
View Code

 

转载于:https://www.cnblogs.com/acoccus/p/10957065.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/350402.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

分析java 线程占用内存_Java线程:保留的内存分析

分析java 线程占用内存本文将为您提供一个教程&#xff0c;使您可以确定活动应用程序Java线程中保留了多少Java堆空间 。 将提供来自Oracle Weblogic 10.0生产环境的真实案例研究&#xff0c;以使您更好地理解分析过程。 我们还将尝试证明过多的垃圾回收或Java堆空间的内存占用…

图像傅里叶变换

1傅里叶变换物理意义 图像的频率是表征图像中灰度变化剧烈程度的指标&#xff0c;是灰度在平面空间上的梯度。如&#xff1a;大面积的沙漠在图像中是一片灰度变化缓慢的区域&#xff0c;对应的频率值很低&#xff1b;而对于地表属性变换剧烈的边缘区域在图像中是一片灰度变化剧…

python获取涨停股票_今日股市光大证券

一、查询股票账户的总盈亏的方法如下&#xff1a;1、查询你的银行银证转账记录&#xff0c;用转进的资金总额减去转出的资金总额&#xff0c;再和你现在的证券账户市值比较&#xff0c;即可得出盈亏。2、联系你的开户券商&#xff0c;通过柜面进行轧差查询资金进出情况&#xf…

MVC web api 返回JSON的几种方式,Newtonsoft.Json序列化日期时间去T的几种方式

MVC web api 返回JSON的几种方式&#xff0c;Newtonsoft.Json序列化日期时间去T的几种方式 2015-01-18 00:11 https://www.muhanxue.com/essays/2015/01/8623699.html MVC web api 返回JSON的几种方式 1、在 WebApiConfig的 Register中加入以下代码 config.Formatters.JsonForm…

从微服务到分布式系统-Java开发人员生存指南

感觉像是对微服务的炒作正在慢慢地落到实处&#xff0c;并且我们的行业开始意识到&#xff0c;仅通过在现有组件之上公开一些HTTP接口就无法轻松创建根据微服务背后的体系结构范式的系统。 我们似乎确实同意必须进行服务优化的基础架构&#xff0c;文化和组织变革&#xff0c;最…

timespan怎么比较大小_钻石吊坠回收怎么选择大小?

钻石吊坠也是比较常见的钻饰&#xff0c;和钻戒不同的是&#xff0c;钻石吊坠并不是必须要买的珠宝&#xff0c;但作为点缀全身的装饰&#xff0c;钻石吊坠的大小问题也让大家很是关注&#xff0c;钻石吊坠回收怎么选择大小&#xff1f;一般我们会把钻石从10分算起(10分以下的钻…

图像边缘算子

&#xff08;1&#xff09;常见边缘检测算子&#xff1a;Roberts 、Sobel 、Prewitt、Laplacian、Log/Marr、Canny、Kirsch、Nevitia &#xff08;2&#xff09; 其中一阶边缘算子&#xff1a;Roberts 、Sobel 、Prewitt、Kirsch。 其中二阶边缘算子&#xff1a;Laplacian、Log…

python使用telnet远程连接linux系统读取信息_Linux服务笔记之一:Telnet 远程登录

最近&#xff0c;在学习Linux服务器中的搭建&#xff0c;感觉上非常强大。下面&#xff0c;我写下在Linux下搭建Telnet服务来远程管理设备&#xff0d;&#xff0d;这也是一种古老的远程管理方 式这一。其中&#xff0c;Telnet服务也是基于C/S模式的。客户端用Telnet远程登录协…

团队作业(五):冲刺总结

团队作业&#xff08;五&#xff09;&#xff1a;冲刺总结 转载于:https://www.cnblogs.com/20175226wpy/p/10964911.html

matlab 判断对象的数据类型isa()

K isa(obj, class_name) 判断obj是否为class_name类型。如果是&#xff0c;返回逻辑1&#xff08;真&#xff09;&#xff1b;如果不是&#xff0c;返回逻辑0&#xff08;假&#xff09;。 参量obj是一个MATLAB对象或者Java对象。参量class_name是MATLAB&#xff08;预定义的…

使用Oracle Data Integrator(和Kafka / MapR流)完善Lambda体系结构

“ Lambda体系结构是一种数据处理体系结构&#xff0c;旨在通过利用批处理和流处理方法来处理大量数据。 这种体系结构方法试图通过使用批处理提供批处理数据的全面而准确的视图&#xff0c;同时使用实时流处理提供在线数据的视图来平衡延迟 &#xff0c; 吞吐量和容错能力 。 …

matlab regionprops区域属性信息

stats regionprops(L,properties) 返回的stats为一个结构体struct 测量标注矩阵L中每一个标注区域的一系列属性。L中不同的正整数元素对应不同的区域&#xff0c;例如&#xff1a;L中等于整数1的元素对应区域1&#xff1b;L中等于整数2的元素对应区域2&#xff1b;以此类推。…

python3虚拟环境使用教程_python虚拟环境完美部署教程

一、前言预处理建议仔细看完本文章之后在进行操作&#xff0c;避免失误&#xff0c;本环境可以用于生产环境&#xff0c;有利于生产环境python之间的环境隔离&#xff0c;互相不会产生环境冲突&#xff1b;pyenv和pyenv-virtualenv可以完美结合使用&#xff0c;具体使用情况看项…

yandexbot ip列表整理做俄罗斯市场的站长可以关注一下

这段时间ytkah在负责一个客户的网站&#xff0c;主要做俄罗斯市场&#xff0c;当然是要研究Yandex了&#xff0c;首先是要知道yandexbot的ip有哪些&#xff0c;本文通过分析这个站从2018.12.02到2019.05.21这段时间产生的网站log日志得出的结果&#xff0c;log日志文件1.3G&…

为什么闲鱼不能搜索python_Python 分析后告诉你闲鱼上哪些商品抢手?

前言文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。作者&#xff1a;【Airpython】PS&#xff1a;如有需要Python学习资料的小伙伴可以加点击下方链接自行获取http://t.cn/A6Zvjdun准 备 工 作在编写代码…

matlab imfill孔洞填充

BW2 imfill(BW) 作用填充二值图像BW中的空洞 clear all; clc; close all; img imread(test1.png); if ndims(img)3 img rgb2gray(img); end img_bw im2bw(img); img_fill imfill(img_bw, holes); figure; subplot(1,2,1),imshow(img_bw), title(有空洞的图像); s…

将Gatling集成到Gradle构建中–了解SourceSet和配置

我最近在一个项目中工作&#xff0c;我们不得不将出色的负载测试工具Gatling集成到基于Gradle的版本中。 有可用的gradle插件使此操作变得容易&#xff0c;其中两个是this和this &#xff0c;但是对于大多数需求而言&#xff0c;只需简单执行命令行工具本身就足够了&#xff0c…

matlab bwlabel标记连通区域

[L,num] bwlabel(BW,n) 这里num返回的就是BW中连通区域的个数。返回一个和BW大小相同的L矩阵&#xff0c;包含了标记了BW中每个连通区域的类别标签&#xff0c;这些标签的值为1、2、num&#xff08;连通区域的个数&#xff09;。n的值为4或8&#xff0c;表示是按4连通寻找区域…

mysql遇到时区问题的坑(Java解决方案)

最近项目遇到一个坑&#xff0c;就是server和db之间存在时区问题&#xff0c;本人的db是utc时间&#xff0c; 可以使用代码设置时区来解决&#xff0c;本人这里使用joda三方包&#xff0c;joda蛮好用的&#xff0c;具体用法这里不做详细描述。 先引入pom <dependency><…

vba 不等于_EXCEL表格VBA中的运算符

就像函数公式里面需要运算符一样&#xff0c;VBA中同样也需要运算符&#xff0c;今天我们就来了解下VBA中的运算符是怎么表达的。在学习运算符前&#xff0c;我们先来学习一段简单的VBA代码&#xff0c;Msgbox的表达。在代码窗口中输入&#xff1a;sub test ()tset表示测试的意…