20192309 2020-2021-1 《数据结构与面向对象程序设计》实验八报告

20192309 2020-2021-1 《数据结构与面向对象程序设计》实验八报告

课程:《数据结构与面向对象程序设计》

班级: 1923

姓名: 金一非

学号: 20192309

实验教师:王志强老师

实验日期:2020年12月4日

必修/选修: 必修

一、实验内容

1.参考教材PP16.1,完成链树LinkedBinaryTree的实现(getRight,contains,toString,preorder,postorder)
用JUnit或自己编写驱动类对自己实现的LinkedBinaryTree进行测试,提交测试代码运行截图,要全屏,包含自己的学号信息
2.基于LinkedBinaryTree,实现基于(中序,先序)序列构造唯一一棵二㕚树的功能,比如给出中序HDIBEMJNAFCKGL和后序ABDHIEJMNCFGKL,构造出附图中的树
用JUnit或自己编写驱动类对自己实现的功能进行测试,提交测试代码运行截图,要全屏,包含自己的学号信息
3.自己设计并实现一颗决策树
4.输入中缀表达式,使用树将中缀表达式转换为后缀表达式,并输出后缀表达式和计算结果

二、实验过程及结果

1.参考教材PP16.1,完成链树LinkedBinaryTree的实现(getRight,contains,toString,preorder,postorder)
用JUnit或自己编写驱动类对自己实现的LinkedBinaryTree进行测试,提交测试代码运行截图,要全屏,包含自己的学号信息
代码链接:https://gitee.com/besti1923/java/commit/e51ff3f8e544a7f3eb89f2a16973eb31c59e42d0
运行结果:

2.基于LinkedBinaryTree,实现基于(中序,先序)序列构造唯一一棵二㕚树的功能,比如给出中序HDIBEMJNAFCKGL和后序ABDHIEJMNCFGKL,构造出附图中的树
用JUnit或自己编写驱动类对自己实现的功能进行测试,提交测试代码运行截图,要全屏,包含自己的学号信息
代码链接:https://gitee.com/besti1923/java/commit/e51ff3f8e544a7f3eb89f2a16973eb31c59e42d0
运行结果:

3.自己设计并实现一颗决策树
代码链接:https://gitee.com/besti1923/java/commit/e51ff3f8e544a7f3eb89f2a16973eb31c59e42d0
运行结果:

4.输入中缀表达式,使用树将中缀表达式转换为后缀表达式,并输出后缀表达式和计算结果
代码链接:https://gitee.com/besti1923/java/commit/e51ff3f8e544a7f3eb89f2a16973eb31c59e42d0
运行结果:

三、实验过程中遇到的问题和解决过程

-问题1:实验三的那个决策树,我最开始完全不知道要干嘛,后面的数字我也有点懵
-问题1解决方案:我进行了几次实验,重复的利用Y、N来看看都对应什么,后来发现,后面的数字其实就是将之前的各个句子当做数字,然后一个个形成树,后来我试图再添加一个树,我就添加到了那串数字的最后,但是会有问题,有时会出现BUG后来我在想,是不是那个数字是有规律的,我就继续找,后来才知道,其实顺序是从树的左下到右下,再向上到头的
-问题2:为什么为实现某一个功能,一般都写两个方法:Public、Private方法,然后我们用就调用这个pubic方法?
-问题2解决方案:经过查资料知道这样做主要有两个好处:
一. 从代码上看,以上面的实验二方法为例、两者的传入数据虽然相同,都是两个数组。但是他们的返回值不同,也就是说:有返回值的方法,使用该方法时能够得到一些类型的数据再来利用。

二. 从整体上看,这是一种保护机制,不让自己这个类以外的方法去随便使用这个类的数据,可以保护他的数据,只能通过调用自己类的方法去操纵这些数据。这样会很安全。

其他(感悟、思考等)

需要花费更多的时间;需要更加用心。

参考资料

《Java程序设计与数据结构教程(第二版)》
《Java程序设计与数据结构教程(第二版)》学习指导

posted @ 2020-12-09 21:00  哈蛤蛤哈  阅读(97)  评论(0编辑  收藏  举报