课程:《程序设计与数据结构》
班级: 1823
姓名: 李金泉
学号:20182335
实验教师:王志强
实验日期:2019年11月4日
必修/选修: 必修
1.实验内容
1.参考教材PP16.1,完成链树LinkedBinaryTree的实现(getRight,contains,toString,preorder,postorder),用JUnit或自己编写驱动类对自己实现的LinkedBinaryTree进行测试。
2.基于LinkedBinaryTree,实现基于(中序,先序)序列构造唯一一棵二㕚树的功能,比如给出中序HDIBEMJNAFCKGL和先序ABDHIEJMNCFGKL,构造出附图中的树,用JUnit或自己编写驱动类对自己实现的功能进行测试。
3.自己设计并实现一颗决策树并完成测试。
4.输入中缀表达式,使用树将中缀表达式转换为后缀表达式,并输出后缀表达式和计算结果
2. 实验过程及结果
3. 实验过程中遇到的问题和解决过程
问题1:为什么为实现某一个功能,一般都写两个方法:Public、Private方法,然后我们用就调用这个pubic方法?
问题1解决方案:经过查资料知道这样做主要有两个好处:
一. 从代码上看,以上面的实验二方法为例、两者的传入数据虽然相同,都是两个数组。但是他们的返回值不同,也就是说:有返回值的方法,使用该方法时能够得到一些类型的数据再来利用。
二. 从整体上看,这是一种保护机制,不让自己这个类以外的方法去随便使用这个类的数据,可以保护他的数据,只能通过调用自己类的方法去操纵这些数据。这样会很安全
问题2:在完成决策树时,一开始没有仔细学习,没理解那些数字的含义,仅仅是看了几段比较有代表性的决策树代码后就想上手操作,对于决策的执行过程完全找不到方向
问题2解决方案:
在进行几次低效率的实验来判断选择结果之后,我意识到自己走到了歧路上,于是重新看了看决策树代码的含义,才发现那些数字就是代表选择结果构造树,然后按照左下到右下,从下往上的规律排列来达到决策的目的,修改代码后终于实现了决策树
其他(感悟、思考等)
本次实验主要的是排序和查找的算法的一些设计,帮助我们复习了之前的内容. 我对实验的过程还是不够了解和掌握,尤其是调试的过程中有很多步骤不知道它的具体意思,需要向同学请教和学习。以后会继续努力弄懂每个步骤。
## 参考资料
《Java程序设计与数据结构教程(第二版)》
《Java程序设计与数据结构教程(第二版)》学习指导