20182308 华罗晗 2019-2020-1 《数据结构与面向对象程序设计》实验8报告

20182308 2019-2020-1 《数据结构与面向对象程序设计》实验8报告

课程:《程序设计与数据结构》
班级:1823
姓名:华罗晗
学号:20182308
实验教师:王志强
实验日期:2019年11月11日
必修/选修:必修

1.实验内容

1、参考教材PP16.1,完成链树LinkedBinaryTree的实现(getRight,contains,toString,preorder,postorder)
用JUnit或自己编写驱动类对自己实现的LinkedBinaryTree进行测试,提交测试代码运行截图,要全屏,包含自己的学号信息
课下把代码推送到代码托管平台

2、基于LinkedBinaryTree,实现基于(中序,先序)序列构造唯一一棵二叉树的功能,比如给出中序HDIBEMJNAFCKGL和后序ABDHIEJMNCFGKL,构造出附图中的树
用JUnit或自己编写驱动类对自己实现的功能进行测试,提交测试代码运行截图,要全屏,包含自己的学号信息
课下把代码推送到代码托管平台

3、自己设计并实现一颗决策树
提交测试代码运行截图,要全屏,包含自己的学号信息
课下把代码推送到代码托管平台

4、输入中缀表达式,使用树将中缀表达式转换为后缀表达式,并输出后缀表达式和计算结果(如果没有用树,正常评分。如果用到了树,即使有小的问题,也酌情给满分)
提交测试代码运行截图,要全屏,包含自己的学号信息

2. 实验过程及结果

1、实践一,首先需要完善课本上的代码,将没有补全的代码补全。并作出测试代码。目标Junit的运行结果如下:

2、实践二当中,需要建立一棵树,然后根据题目要求,另外编一个测试代码去运行使用它。运行结果如下,但是这一次失败了,没有运行成功:

3、根据课本上的内容,设计一个决策树。我的决策树基本沿用了课本代码中决策树的框架,不过改了一些文字。

4、中序转后序,不仅要输出结果也要输出的出来的后序计算式。这个可以根据之前设计的逆波兰转化式代码、根据网上的一些类修改一下。不过因为实践二崩掉了所以没有勇气面对树了,也就没有用树的方法去做。

3. 实验过程中遇到的问题和解决过程

  • 问题1:课本中给出的ArrayIterator类型我们原本并未编写过,也基本没有接触过,不知如何编写。
  • 问题1解决方案:根据老师解答,Iterator类的特点和List类有许多相近之处。而ArrayIterator类的基本功能都已经被ArrayList囊括了,我们可以直接用ArrayList代替代码中所有的ArrayIterator。

其他(感悟、思考等)

1、树的内容还是很复杂的,尤其是Node类的概念原本就很抽象,许多需要建立在NODE基础上增加功能的类(比如BTNode)也十分难以理解。很多时候都是构建了这个方法类出来,却没把发去运行它或者运行没有结果。当然看见过前人的代码,他们的树可以真的以“树”的形象出现,而我们现在敲出来的树,依旧只是作为一种排序的工具而存在的。

2、决策树的内容则好理解不少,但是因为设计的时候基本都需要手敲,所以决策树的文本工作量特别大。同时我也沿着“背疼分析”的类的逻辑做了我自己的那个设计,基本可以说是只改了文本。,

参考资料

posted on 2019-11-17 20:24  20182308hlh  阅读(118)  评论(0编辑  收藏  举报

导航