实验二实验报告

实验过程

实验2.1

  • 实验内容:
    • 参考教材p375,完成链树LinkedBinaryTree的实现(getRight,contains,toString,preorder,postorder)

    • 用JUnit或自己编写驱动类对自己实现的LinkedBinaryTree进行测试,提交测试代码运行截图,要全屏,包含自己的学号信息

  • 实验过程
    • 这个实验主要是完善书上已给出的几个代码,再针对它们写一个测试类或者驱动类来验证编写类的正确性即可。在BTNode里面有中序遍历方法,下面留下来先序和后序给我们自己完善,这个课上已经讲过了。而在LinkedBinaryTree中剩下的几个方法在前面都有类似的参照。对比着完成了。
  • 遇到的困难及解决方法:
    • 这次的测试类里面我创建的是一个驱动测试类而不是以前一直用的单元测试,第一次输出的先后序遍历结果有错误,经过代码复查,我发现我在编写BTNode里面的preord和postord方法的时候时是照着中序写的,left.inorder这种调用没有改成相应的顺序表达式方法,如下面应调用left.preorder。修改完毕后测试驱动类的构建输出的结果和asserEqual测试过的方法均正确。
    public void preorder(ArrayIterator<T> iter) {iter.add(element);if (left!=null)left.preorder(iter);if (right!=null)right.preorder(iter);} 

image

实验2.2

  • 实验内容:
    • 基于LinkedBinaryTree,实现基于(中序,先序)序列构造唯一一棵二㕚树的功能,比如教材P372,给出HDIBEMJNAFCKGL和ABDHIEJMNCFGKL,构造出附图中的树

    • 用JUnit或自己编写驱动类对自己实现的功能进行测试,提交测试代码运行截图,要全屏,包含自己的学号信息。

  • 实验过程
    • 这个实验我是根据CSDN上别人发布的一个java的中先序构数的代码来完成的,原代码里输出的是Integer类型,我通过把设置的结点和方法全部换成String后就可以完成实验2.2的要求了。核心代码学习:这个代码的核心方法跟我在上课中学到的,在学习博客总结中总结的类似:用先序的第一个元素也就是根将中序表达式分割为左右子树,再根据左右子树的根结点继续划分成更小的子树,在划分到最小单元也就是prestart=preend,instart=inend时,也就是先后序遍历到的最小树长度为1时:返回的都是叶子结点。返回这些结点就可以输出树。同样采用了递归的思路。
    public static TreeNode reConstructBinaryTreeCore(String[] pre, String[] in, int preStart, int preEnd, int inStart, int inEnd) {TreeNode tree = new TreeNode(pre[preStart]);tree.left = null;tree.right = null;if (preStart == preEnd && inStart == inEnd) {return tree;}int root = 0;for(root= inStart; root < inEnd; root++){if (pre[preStart] == in[root]) {break;}}int leifLength = root - inStart;int rightLength = inEnd - root;if (leifLength > 0) {tree.left = reConstructBinaryTreeCore(pre, in, preStart+1, preStart+leifLength, inStart, root-1);}if (rightLength > 0) {tree.right = reConstructBinaryTreeCore(pre, in, preStart+1+leifLength, preEnd, root+1, inEnd);}return tree;}
  • image

实验2.3

  • 实验内容
    • 完成PP16.6,提交测试代码运行截图,要全屏,包含自己的学号信息。
    • 提交测试代码运行截图,要全屏,包含自己的学号信息。
  • 实验过程
    • 修改教材十六章的代码,将自己想要的问题和答案做成二叉树,再用自己实现的基础二叉树实现出来。我的二叉树:
      image
      核心代码学习:
    public void diagnose(){Scanner scan = new Scanner(System.in);LinkedBinaryTree<String> current = tree;System.out.println ("可供选择的材料如下:金,铁,铜,塑料。回答“Y”表示同意,回答“N”表示不同意。");System.out.println();while (current.size() > 1){System.out.println (current.getRootElement());if (scan.nextLine().equalsIgnoreCase("N"))current = current.getRight();elsecurrent = current.getLeft();}System.out.println (current.getRootElement());}

    dignose是书上backpain诊断病痛类型的方法。这种通过客户输入来确定下一步操作的方法很久没有接触过了,之后的团队项目游戏里面可能要经常用到,在这里mark一下:

    (scan.nextLine().equalsIgnoreCase("N"))。

    image

### 实验四

  • 实验内容
    • 完成PP16.8,提交测试代码运行截图,要全屏,包含自己的学号信息
  • 实验过程
    我在查阅了网上的一些资料后采取了别人实现的一种与我们在栈的后缀表达式生成中用的近似的方法:在不涉及括号的时候奇数个数据抽出来形成一个数组,偶数位符号抽出来形成一个数组,再用两个数据元素和一个符号数组组成一个子树,这样逐级上溯到根节点。值得注意的是:构建的时候从最深层的子树往上追溯,一直到根节点结束。可以发现:有叶子结点都是数据元素,父结点都是计算符。本题中用到的计算表达树是:
    image
  • 遇到的困难及解决过程
    在计算后缀表达式的时候我遇到了困难,最终我输出的后缀表达式是一个void类型的方法输出的表达式,我不太清楚怎么调用这个输出的结果,比如我们之前在栈那一章节里面用的计算方法需要读取String类型的表达式,但是我在网上也没有查到能直接将void类型转换成string类型的方法,毕竟void类型本身有时候就是无类型定义方法的通用归类。我只能采取手动输入的方式来调用后缀表达式计算方法了。
    image

### 实验五

  • 实验内容:完成PP17.1,提交测试代码运行截图,要全屏,包含自己的学号信息
  • 实验过程:这个查找树应该更形象地称之为老师说的排序树更合适,add方法在添加的时候是按照顺序添加的,比父节点小的元素在左子树上添加,如果已经有左子结点与左子结点比较这样循环。这样最终输出的时候finmin即输出中序表达式的第一个元素即可,findmax输出最后一个元素即可。
    image

转载于:https://www.cnblogs.com/cs162315/p/7745368.html

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

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

相关文章

jmeter之录制控制器与代理的使用

jmeter之录制控制器与代理的使用 1. 先启动jmeter&#xff0c;在测试计划中添加线程组 2. 选中线程组右键添加&#xff0c;在配置元件中点击HTTP请求默认值 3. 选中线程组右键添加&#xff0c;在逻辑控制器中点击录制控制器 4. 工作台中&#xff0c;右…

为什么要进行归一化处理?(从寻找最优解这个角度讨论)

例子 假定为预测房价的例子&#xff0c;自变量为面积&#xff0c;房间数两个&#xff0c;因变量为房价。 那么可以得到的公式为&#xff1a; 其中代表房间数&#xff0c;代表变量前面的系数。 其中代表面积&#xff0c;代表变量前面的系数。 首先我们祭出两张图代表数据是否均一…

redis安装笔记

下载redis 官网下载地址&#xff1a;http://redis.io/download github下载地址&#xff1a;https://github.com/MSOpenTech/redis/tags 根据系统版本下载对应版本&#xff0c;下载完放置你要放的盘 然后cmd进入命令行&#xff0c;进入redis目录&#xff0c;然后输入启动命令 re…

vscode 配置 路径别名 @

为了保证多个项目复用代码&#xff0c;我喜欢把路径别名设置为&#xff0c;下面介绍vscode中的配置方法。 1、安装插件Path Intellisense 2、配置 "path-intellisense.mappings": {"": "${workspaceRoot}/src" }3、在项目package.json所在同级…

小程序 canvas 设置 字体 字号加粗

之前的版本使用 现在直接使用CanvasContext.font即可 例如 this.ctx2.font normal bold 40px sans-serif;

关于小码哥kylin

技术格言: 用双手改变人生,用代码改变世界! 个人网站:http://www.isainttech.com QQ:56619556 Email:dragonsaintqq.com 微信:kylin10219556 Kylin开发技术交流群:540749978 转载于:https://www.cnblogs.com/kylinsblog/p/7760383.html

小程序 mpvue 使用canvas绘制环形图表

本来想用css3来实现&#xff0c;发现轮廓边上残影严重&#xff0c;所以直接用小程序的canvas使用来。 最终效果如下&#xff1a; 我的整页代码如下&#xff0c;里面已经写出备注来。 <template><div class"statistic"><canvas canvas-id"runCa…

简书搜索爬虫

这期的爬虫是爬取“简书”的搜索结果页&#xff0c;篇幅将会分为两部分来写&#xff0c;第一部分是爬虫部分&#xff0c;主要涉及搜索文章的提取和数据保存&#xff0c;第二部分涉及基本的数据分析和可视化&#xff0c;本篇文章属于爬虫篇。 爬虫源代码 首先看一下整个爬虫的源…

js的加密和解密

最近在研究js的加密和解密的问题&#xff0c;上网上搜出来很多方法&#xff0c;不过不知道到底哪一个会比较管用。这里是今天找到的一些关于base64加密解密的js代码&#xff0c;已经经过试验&#xff0c;可以使用&#xff0c;不过网上很多加密解密的工具&#xff0c;这种方式加…

TCP/IP协议三次握手与四次握手流程解析

一、TCP报文格式TCP/IP协议的详细信息参看《TCP/IP协议详解》三卷本。下面是TCP报文格式图&#xff1a;图1 TCP报文格式上图中有几个字段需要重点介绍下&#xff1a;&#xff08;1&#xff09;序号&#xff1a;Seq序号&#xff0c;占32位&#xff0c;用来标识从TCP源端向目的端…

Hadoop学习笔记—20.网站日志分析项目案例(三)统计分析

网站日志分析项目案例&#xff08;一&#xff09;项目介绍&#xff1a;http://www.cnblogs.com/edisonchou/p/4449082.html 网站日志分析项目案例&#xff08;二&#xff09;数据清洗&#xff1a;http://www.cnblogs.com/edisonchou/p/4458219.html 网站日志分析项目案例&#…

Jmeter使用流程及简单分析监控

一、安装Jmeter 1、下载Jmeter 下载地址&#xff1a;http://jmeter.apache.org/download_jmeter.cgi 目前最新版为2.9&#xff0c;其余文件如源代码等也可从如下官网下载&#xff1a; http://jmeter.apache.org/download_jmeter.cgi 2、安装Jmeter之前 安装Jmeter之前需要先配置…

JMeter工具使用初探

工欲善其事必先利其器&#xff0c;要保证移动应用产品在上线之后能稳定运行于各种复杂环境&#xff0c;仅仅进行功能测试是远远不够的&#xff0c;压力测试越来越被应用开发商所重视。而压力测试从传统的内部压力到基于云计算的压力测试&#xff0c;再到用户视角的外部压测&…

HDU1251 统计难题 trie树 简单

http://acm.hdu.edu.cn/showproblem.php?pid1251题意: 找前缀数量 裸模板 1 #include<cstdio>2 #include<cstring>3 #include<iostream>4 #include<algorithm>5 #include<cmath>6 #include<queue>7 using namespace std;8 const int maxn…

JMeter场景设置与监控

随着IT技术的飞速发展和企业互联网业务规模不断扩张&#xff0c;IT架构经历了以数据计算为核心的C/S架构、以聚焦业务功能及服务化构建应用的经典互联网架构和如今整合IT资源和按需使用的云计算架构三个阶段。 与之同步发展的压力测试同样有三个发展阶段&#xff0c;从防火墙内…

阿里云轻应用服务器 宝塔面板 mongodb 配置外网连接 其一 基础配置

买了一台阿里云轻应用服务器做测试&#xff0c;我默认安装的是宝塔面板&#xff0c;下面详细记录配置mongodb过程。 1、进行安装&#xff0c;通过宝塔面板自带的软件管理进行安装 2、首先需要保证外网能够进行访问 设置监听端口为0.0.0.0&#xff0c;原来的是127.0.0.1只允许…