20182322 2019-2020-1 《数据结构与面向对象程序设计》实验8报告
课程:《程序设计与数据结构》
班级: 1823
姓名: 王美皓
学号:20182322
实验教师:王志强
实验日期:2019年11月7日
必修/选修: 必修
1.实验内容
1.参考教材PP16.1,完成链树LinkedBinaryTree的实现(getRight,contains,toString,preorder,postorder),用JUnit或自己编写驱动类对自己实现的LinkedBinaryTree进行测试。
2.基于LinkedBinaryTree,实现基于(中序,先序)序列构造唯一一棵二㕚树的功能,比如给出中序HDIBEMJNAFCKGL和先序ABDHIEJMNCFGKL,构造出附图中的树,用JUnit或自己编写驱动类对自己实现的功能进行测试。
3自己设计并实现一颗决策树并完成测试。
4.输入中缀表达式,使用树将中缀表达式转换为后缀表达式,并输出后缀表达式和计算结果。
2. 实验过程及结果
-
完成链树LinkedBinaryTree的实现(getRight,contains,toString,preorder,postorder),并完成测试。
-
基于LinkedBinaryTree,实现基于(中序,先序)序列构造唯一一棵二叉树的功能,并完成测试。
-
-
自己设计并实现一颗决策树并完成测试。
-
输入中缀表达式,使用树将中缀表达式转换为后缀表达式,并输出后缀表达式和计算结果。
3. 实验过程中遇到的问题和解决过程
- 问题1:实验三的那个决策树,我最开始完全不知道要干嘛,后面的数字我也有点懵
- 问题1解决方案:我进行了几次实验,重复的利用Y、N来看看都对应什么,后来发现,后面的数字其实就是将之前的各个句子当做数字,然后一个个形成树,后来我试图再添加一个树,我就添加到了那串数字的最后,但是会有问题,有时会出现BUG后来我在想,是不是那个数字是有规律的,我就继续找,后来才知道,其实顺序是从树的左下到右下,再向上到头的
- 问题2:为什么为实现某一个功能,一般都写两个方法:Public、Private方法,然后我们用就调用这个pubic方法?
- 问题2解决方案:经过查资料知道这样做主要有两个好处:
一. 从代码上看,以上面的实验二方法为例、两者的传入数据虽然相同,都是两个数组。但是他们的返回值不同,也就是说:有返回值的方法,使用该方法时能够得到一些类型的数据再来利用。
二. 从整体上看,这是一种保护机制,不让自己这个类以外的方法去随便使用这个类的数据,可以保护他的数据,只能通过调用自己类的方法去操纵这些数据。这样会很安全。
其他(感悟、思考等)
- 这一章的实验虽然只有几个难一点的,比如实验四但确实让人更头疼!这个实验也是对树知识的一个了解和掌握。
- 这个实验就是一环扣着一环,要想好思路,才能做好这个实验。