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),并完成测试。
  • 20182322 2019-2020-1 《数据结构与面向对象程序设计》实验8报告_第1张图片

  • 基于LinkedBinaryTree,实现基于(中序,先序)序列构造唯一一棵二叉树的功能,并完成测试。
  • 20182322 2019-2020-1 《数据结构与面向对象程序设计》实验8报告_第2张图片

-20182322 2019-2020-1 《数据结构与面向对象程序设计》实验8报告_第3张图片

  • 自己设计并实现一颗决策树并完成测试。
  • 20182322 2019-2020-1 《数据结构与面向对象程序设计》实验8报告_第4张图片

  • 输入中缀表达式,使用树将中缀表达式转换为后缀表达式,并输出后缀表达式和计算结果。
  • 20182322 2019-2020-1 《数据结构与面向对象程序设计》实验8报告_第5张图片

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

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

一. 从代码上看,以上面的实验二方法为例、两者的传入数据虽然相同,都是两个数组。但是他们的返回值不同,也就是说:有返回值的方法,使用该方法时能够得到一些类型的数据再来利用。

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

其他(感悟、思考等)

  • 这一章的实验虽然只有几个难一点的,比如实验四但确实让人更头疼!这个实验也是对树知识的一个了解和掌握。
  • 这个实验就是一环扣着一环,要想好思路,才能做好这个实验。

参考资料

  • 利用Java实现表达式二叉树

你可能感兴趣的:(20182322 2019-2020-1 《数据结构与面向对象程序设计》实验8报告)