20192322 《数据结构与面向对象程序设计》实验八报告

20192322 《数据结构与面向对象程序设计》实验八报告

  • 课程:《程序设计与数据结构》
  • 班级: 1923
  • 姓名: 罗皓楠
  • 学号:20192322
  • 实验教师:王志强
  • 实验日期:2020年12月15日
  • 必修/选修: 必修

1.实验内容

参考教材PP16.1,完成链树LinkedBinaryTree的实现(getRight,contains,toString,preorder,postorder)用JUnit或自己编写驱动类对自己实现的LinkedBinaryTree进行测试,提交测试代码运行截图,要全屏,包含自己的学号信息课下把代码推送到代码托管平台
基于LinkedBinaryTree,实现基于(中序,先序)序列构造唯一一棵二㕚树的功能,比如给出中序HDIBEMJNAFCKGL和后序ABDHIEJMNCFGKL,构造出附图中的树用JUnit或自己编写驱动类对自己实现的功能进行测试,提交测试代码运行截图,要全屏,包含自己的学号信息课下把代码推送到代码托管平台
自己设计并实现一颗决策树
提交测试代码运行截图,要全屏,包含自己的学号信息课下把代码推送到代码托管平台
输入中缀表达式,使用树将中缀表达式转换为后缀表达式,并输出后缀表达式和计算结果(如果没有用树,正常评分。如果用到了树,即使有小的问题,也酌情给满分)
提交测试代码运行截图,要全屏,包含自己的学号信息

2. 实验过程及结果

完成链树LinkedBinaryTree的实现

实现基于(中序,先序)序列构造唯一一棵二㕚树的功能

设计并实现一颗决策树

输入中缀表达式,使用树将中缀表达式转换为后缀表达式

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

  • 问题1:教材代码中的ArrayIterator类无法识别
    原因分析:Iterator模式是用于遍历集合类的标准访问方法。它可以把访问逻辑从不同类型的集合类中抽象出来,从而避免向客户端暴露集合的内部结构.每一种集合类返回的Iterator具体类型可能不同,例如setArray(array)就返回ArrayIterator

  • 解决方案:修改方法的定义类型为ArrayList

  • 问题2:设计决策树的时候,无法按变量命名顺序赋值
    原因分析:决策树的设计是自底向上的,所以要先定义决策树的叶子节点,然后再根据设计连接左右子树。所以如果变量赋值不按顺序是正常的。

  • 解决方案:按照自底向上的顺序定义变量并赋值

  • 问题3:测试代码中预期与实际显示相同却报错
    原因分析:类型不同,调用方法后输出的结果不是预期中设计的字符串型

  • 解决方案:在对象调用完方法后,再调用toString()方法,例如e.inorder().toString()

其他(感悟、思考等)

树是一个比较难掌握的数据结构,虽然上学期在离散课上接触过了,但知识掌握程度还停留在理论方面,真正代码实现的时候——特别是许多方法涉及递归算法的时候——我觉得还是很困难的,需要更多的实践去练习。

posted @ 2020-12-07 10:09  阿这阿这  阅读(50)  评论(0编辑  收藏  举报