20182331 2019-2020-1 《数据结构与面向对象程序设计》实验八报告
Posted gao-kuanrang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了20182331 2019-2020-1 《数据结构与面向对象程序设计》实验八报告相关的知识,希望对你有一定的参考价值。
课程:《程序设计与数据结构》 班级: 1823
姓名: 高宽让
学号:20182331
实验教师:王志强
实验日期:2019年11月11日
必修/选修: 必修
一、实验内容
1.参考教材PP16.1,完成链树LinkedBinaryTree的实现(getRight,contains,toString,preorder,postorder)
用JUnit或自己编写驱动类对自己实现的LinkedBinaryTree进行测试,提交测试代码运行截图,要全屏,包含自己的学号信息
课下把代码推送到代码托管平台
2.基于LinkedBinaryTree,实现基于(中序,先序)序列构造唯一一棵二?树的功能,比如给出中序HDIBEMJNAFCKGL和后序ABDHIEJMNCFGKL,构造出附图中的树
用JUnit或自己编写驱动类对自己实现的功能进行测试,提交测试代码运行截图,要全屏,包含自己的学号信息
课下把代码推送到代码托管平台
3.自己设计并实现一颗决策树
提交测试代码运行截图,要全屏,包含自己的学号信息
课下把代码推送到代码托管平台
4.输入中缀表达式,使用树将中缀表达式转换为后缀表达式,并输出后缀表达式和计算结果(如果没有用树,正常评分。如果用到了树,即使有小的问题,也酌情给满分)
提交测试代码运行截图,要全屏,包含自己的学号信息
二、 实验过程及结果
树-1-实现二叉树
要实现 LinkedBinaryTree 中的方法,首先要将结点类 BinaryTreeNode 补充完整。在结点类中,需要补充先序遍历和后序遍历的函数,由于这里用到了迭代器和递归的思路,所以直接参考中序遍历给出的函数即可
树-2-中序先序序列构造二叉树
(1)确定树的根结点;(先序遍历的第一个结点就是二叉树的根)
(2)求解树的子树;(找到根在中序遍历的位置,位置左边就是二叉树的左孩子,位置右边是二叉树的右孩子,如果根结点左边或右边为空,那么该方向子树为空;如果根节点左边和右边都为空,那么根节点已经为叶结点)
(3)对二叉树的左、右孩子分别进行步骤(1)(2),直到求出二叉树的结构为止。
树-3-决策树
决策树需要注意的就是不要搞混左子树和右子树的对象,在传递元素时可以参考书中的格式,先定义元素,再定义对应类型的树,之后再将元素依次实例化并填入构建的子树,根据回答迭代输出问题,直到只剩下最后一层叶结点,输出判定结果即可:
树-4-表达式树
三、 实验过程中遇到的问题和解决过程
问题1:递归思想解决问题的核心是什么?
问题1解决方案:
找整个递归的终止条件,找返回值,本级递归应该做什么。
问题2:决策树不能往下走,只留在root节点。
问题2解决方案:建立决策树的时侯应该使用diagnose方法,用Scanner输入,判断语句来执行。
四、 其他(感悟、思考等)
查找与排序是最为基本的数据结构算法,一个程序执行能力的高低取决于是否采用了一个好的算法,而一个好算法又很能考验程序员的功力,在这方面,我还有很长的路要走。
参考资料
以上是关于20182331 2019-2020-1 《数据结构与面向对象程序设计》实验八报告的主要内容,如果未能解决你的问题,请参考以下文章
# 20182331 2019-2020-1 《数据结构与面向对象程序设计》实验三报告
20182331 2019-2020-1 《数据结构与面向对象程序设计》实验六报告
20182331 2019-2020-1 《数据结构与面向对象程序设计》实验九报告
20182331 2019-2020-1《数据结构与面向对象程序设计》第8周学习总结