实验八 java多线程操作_20182310实验八实验报告
20182310 2019-2020 《数据结构与面向对象程序设计》实验八 树报告
课程:《程序设计与数据结构》
班级: 1823
姓名: 周烔
学号:20182310
实验教师:王志强
实验日期:2019年11月11日
必修/选修: 必修
1.实验内容
1.参考教材PP16.1,完成链树LinkedBinaryTree的实现(getRight,contains,toString,preorder,postorder)
用JUnit或自己编写驱动类对自己实现的LinkedBinaryTree进行测试,提交测试代码运行截图,要全屏,包含自己的学号信息
课下把代码推送到代码托管平台
2.基于LinkedBinaryTree,实现基于(中序,先序)序列构造唯一一棵二㕚树的功能,比如给出中序HDIBEMJNAFCKGL和后序ABDHIEJMNCFGKL,构造出附图中的树
用JUnit或自己编写驱动类对自己实现的功能进行测试,提交测试代码运行截图,要全屏,包含自己的学号信息
课下把代码推送到代码托管平台
3.自己设计并实现一颗决策树
提交测试代码运行截图,要全屏,包含自己的学号信息
课下把代码推送到代码托管平台
4.输入中缀表达式,使用树将中缀表达式转换为后缀表达式,并输出后缀表达式和计算结果(如果没有用树,正常评分。如果用到了树,即使有小的问题,也酌情给满分)
提交测试代码运行截图,要全屏,包含自己的学号信息
2.实验过程及结果
实验1:
实现二叉树的解决过程及结果
关于先序遍历和后序遍历:
// 执行递归先序遍历。
protected void preOrder(BinaryTreeNode node, ArrayUnorderedList tempList)
{
if (node != null)
{
tempList.addToRear(node.getElement());
preOrder(node.getLeft(), tempList);
preOrder(node.getRight(), tempList);
}
}
// 执行递归后序遍历。
protected void postOrder(BinaryTreeNode node,
ArrayUnorderedList tempList)
{
if (node != null)
{
postOrder(node.getLeft(), tempList);
postOrder(node.getRight(), tempList);
tempList.addToRear(node.getElement());
}
}
实验2:
中序先序序列构造二叉树的解决过程及结果
在做这个实验的时候,特地寻找了关于构造二叉树的步骤
整理如下:
确定整棵二叉树的根节点即先序遍历中的第一个元素root
确定root在中序遍历元素的位置,root左边的元素为二叉树的左子树元素Lchild,右边为右子树元素Rchild
在先序遍历中找到最先出现Lchild中元素的那个元素,为Lchild的根节点——root的左孩子节点,同理找出Rchild的根节点——root的右孩子节点
重复2,3步骤直至二叉树构建完成;
实验3:
自己生成一颗决策树
实验4:
表达式树的解决过程及结果
主要注意的就是树的存放和符号左右两个操作数的顺序
3. 实验过程中遇到的问题和解决过程
问题1:做实验1生成树的形状的时候,出现如下错误情况:
问题1解决方法:在上网查阅资料,查询博客之后发现问题,修改toString方法,输出树状图案。
问题2:在写实验三的决策树时,原本采用的是先写一个txt文件,再使用调用的方法,但无论我怎么修改路径,都无法成功。
问题2解决方法:最后采用了重新编写了一个Java文件写决策类,运行后即可进行决策。
其他(感悟、思考等)
实验用到了很多书本上的代码,还有一些之前的类。关于树,是一门大学问,同时也让我觉得很多东西理解和代码实现不是一回事,理解了我也不知道如何精确下手。同时整理好代码很重要,之前没有好好整理,每次需要重新敲,也浪费了很多时间,在此提醒自己。
实验八 java多线程操作_20182310实验八实验报告相关推荐
- 全网最硬核 Java 新内存模型解析与实验 - 4. Java 新内存访问方式与实验
个人创作公约:本人声明创作的所有文章皆为自己原创,如果有参考任何文章的地方,会标注出来,如果有疏漏,欢迎大家批判.如果大家发现网上有抄袭本文章的,欢迎举报,并且积极向这个 github 仓库 提交 i ...
- 基于Java多线程操作文件案例分享
场景描述:某文件夹下有很多文件和文件夹,要求读取出该文件夹下的所有文件,并将文本打印输出. 案例分析:假设该文件夹下有10个文件,那么我们将所有的文件遍历一遍打印输出就可以了.但如果有100个, 10 ...
- Java多线程学习三十八:你知道什么是 CAS 吗
CAS 简介 CAS 其实是我们面试中的常客,因为它是原子类的底层原理,同时也是乐观锁的原理,所以当你去面试的时候,经常会遇到这样的问题"你知道哪些类型的锁"?你可能会回答&quo ...
- Java多线程学习二十八:原子类和 volatile 有什么异同?
原子类和 volatile 有什么异同 案例说明 volatile 和原子类的异同 我们首先看一个案例.如图所示,我们有两个线程. 在图中左上角可以看出,有一个公共的 boolean flag 标记位 ...
- java 多线程操作List,已经做了同步synchronized,还会有ConcurrentModificationException,知道为什么吗?...
如题,最近项目里有个模块我做了异步处理方面的事情,在code过程中发现一个颠覆我对synchronized这个关键字和用法的地方,请问各位java开发者们是否对此有一个合理的解释,不多说,我直接贴出问 ...
- java多线程操作同一资源
一个购票系统某个票的总数是一个常数,购买者可以有多个,每个购买操作都会使总数减少. 我们设计一个多线程程序 public class ThreadDemo {public static void ma ...
- java 多线程操作map_Java 多线程中ConcurrentHashMap并发读写操作范例
范例1: package com.contoso; import java.util.Random; import java.util.UUID; import java.util.concurren ...
- 全网最硬核 Java 新内存模型解析与实验 - 3. 硬核理解内存屏障(CPU+编译器)
个人创作公约:本人声明创作的所有文章皆为自己原创,如果有参考任何文章的地方,会标注出来,如果有疏漏,欢迎大家批判.如果大家发现网上有抄袭本文章的,欢迎举报,并且积极向这个 github 仓库 提交 i ...
- Java图形编程实验总结_实验二java图形界面编程2015级.doc
实验二java图形界面编程2015级.doc 实验二JAVA图形界面编程一.实验目的熟悉JAVA运行环境,编程掌握JAVASWING组件的图形界面编程.二.实验环境微机,软件MYECLIPSE,JDK ...
最新文章
- Ubuntu下默认使用dash而非bash
- boost::hana::permutations用法的测试程序
- 浅谈 Python 中的多线程。
- ES6 必须要用的数组Filter() 方法,不要再自己循环遍历了!!!
- oracle 压缩导出 导入,EXP直接导出压缩问津,IMP直接导入压缩文件的方法
- action怎么获得 ajax date参数_ajax()gt;load()事件的新用法!!!
- 贝叶斯分层回归模型的推理、EM求解和Java编程
- Silverlight开发廋身攻略(二)
- wmaster0接口的简单介绍
- 学习乔布斯的成功方法
- 往前走吧,管它未来是什么!!
- SpringCloud禁用Eureka自我保护模式
- 半年内连发6篇CNS!又一顶级学者全职回国,加盟浙大!
- 安卓7.0以后如何开启手电筒
- 如何免费下载的全球的矢量边界(WGS84)
- 海康威视旗下萤石网络上市:首日跌12% 公司市值142亿
- 分享快手极速版助手APK和源代码
- cuda矩阵相乘_CUDA入门实战2:将矩阵乘法速度提升5000倍
- 10个java调试技巧
- 中国的软件流氓行为何时了?搜狐输入法竟然自动下载并要求我安装浏览器!!...
热门文章
- 【英语学习】【WOTD】disparage 释义/词源/示例
- 【英语学习】【WOTD】prodigous 释义/词源/示例
- windows模拟微信小程序_Windows 版微信新版本内测!小程序可以直接添加到电脑桌面了...
- apache poi 修改docx表格_JAVA poi对word.docx文件的修改
- git add remote_Git常用命令
- python交换两个值原理_python 两数交换新写法原理
- LeetCode - Easy - Excel Sheet Column Title
- Redis入门第一篇【介绍、安装】
- Chrome用户想哭:因重大缺陷成黑客取款机
- Linux下文件内容查阅命令