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实验八实验报告相关推荐

  1. 全网最硬核 Java 新内存模型解析与实验 - 4. Java 新内存访问方式与实验

    个人创作公约:本人声明创作的所有文章皆为自己原创,如果有参考任何文章的地方,会标注出来,如果有疏漏,欢迎大家批判.如果大家发现网上有抄袭本文章的,欢迎举报,并且积极向这个 github 仓库 提交 i ...

  2. 基于Java多线程操作文件案例分享

    场景描述:某文件夹下有很多文件和文件夹,要求读取出该文件夹下的所有文件,并将文本打印输出. 案例分析:假设该文件夹下有10个文件,那么我们将所有的文件遍历一遍打印输出就可以了.但如果有100个, 10 ...

  3. Java多线程学习三十八:你知道什么是 CAS 吗

    CAS 简介 CAS 其实是我们面试中的常客,因为它是原子类的底层原理,同时也是乐观锁的原理,所以当你去面试的时候,经常会遇到这样的问题"你知道哪些类型的锁"?你可能会回答&quo ...

  4. Java多线程学习二十八:原子类和 volatile 有什么异同?

    原子类和 volatile 有什么异同 案例说明 volatile 和原子类的异同 我们首先看一个案例.如图所示,我们有两个线程. 在图中左上角可以看出,有一个公共的 boolean flag 标记位 ...

  5. java 多线程操作List,已经做了同步synchronized,还会有ConcurrentModificationException,知道为什么吗?...

    如题,最近项目里有个模块我做了异步处理方面的事情,在code过程中发现一个颠覆我对synchronized这个关键字和用法的地方,请问各位java开发者们是否对此有一个合理的解释,不多说,我直接贴出问 ...

  6. java多线程操作同一资源

    一个购票系统某个票的总数是一个常数,购买者可以有多个,每个购买操作都会使总数减少. 我们设计一个多线程程序 public class ThreadDemo {public static void ma ...

  7. java 多线程操作map_Java 多线程中ConcurrentHashMap并发读写操作范例

    范例1: package com.contoso; import java.util.Random; import java.util.UUID; import java.util.concurren ...

  8. 全网最硬核 Java 新内存模型解析与实验 - 3. 硬核理解内存屏障(CPU+编译器)

    个人创作公约:本人声明创作的所有文章皆为自己原创,如果有参考任何文章的地方,会标注出来,如果有疏漏,欢迎大家批判.如果大家发现网上有抄袭本文章的,欢迎举报,并且积极向这个 github 仓库 提交 i ...

  9. Java图形编程实验总结_实验二java图形界面编程2015级.doc

    实验二java图形界面编程2015级.doc 实验二JAVA图形界面编程一.实验目的熟悉JAVA运行环境,编程掌握JAVASWING组件的图形界面编程.二.实验环境微机,软件MYECLIPSE,JDK ...

最新文章

  1. Ubuntu下默认使用dash而非bash
  2. boost::hana::permutations用法的测试程序
  3. 浅谈 Python 中的多线程。
  4. ES6 必须要用的数组Filter() 方法,不要再自己循环遍历了!!!
  5. oracle 压缩导出 导入,EXP直接导出压缩问津,IMP直接导入压缩文件的方法
  6. action怎么获得 ajax date参数_ajax()gt;load()事件的新用法!!!
  7. 贝叶斯分层回归模型的推理、EM求解和Java编程
  8. Silverlight开发廋身攻略(二)
  9. wmaster0接口的简单介绍
  10. 学习乔布斯的成功方法
  11. 往前走吧,管它未来是什么!!
  12. SpringCloud禁用Eureka自我保护模式
  13. 半年内连发6篇CNS!又一顶级学者全职回国,加盟浙大!
  14. 安卓7.0以后如何开启手电筒
  15. 如何免费下载的全球的矢量边界(WGS84)
  16. 海康威视旗下萤石网络上市:首日跌12% 公司市值142亿
  17. 分享快手极速版助手APK和源代码
  18. cuda矩阵相乘_CUDA入门实战2:将矩阵乘法速度提升5000倍
  19. 10个java调试技巧
  20. 中国的软件流氓行为何时了?搜狐输入法竟然自动下载并要求我安装浏览器!!...

热门文章

  1. 【英语学习】【WOTD】disparage 释义/词源/示例
  2. 【英语学习】【WOTD】prodigous 释义/词源/示例
  3. windows模拟微信小程序_Windows 版微信新版本内测!小程序可以直接添加到电脑桌面了...
  4. apache poi 修改docx表格_JAVA poi对word.docx文件的修改
  5. git add remote_Git常用命令
  6. python交换两个值原理_python 两数交换新写法原理
  7. LeetCode - Easy - Excel Sheet Column Title
  8. Redis入门第一篇【介绍、安装】
  9. Chrome用户想哭:因重大缺陷成黑客取款机
  10. Linux下文件内容查阅命令