课程:《Java软件结构与数据结构》
班级: 1723
姓名: 侯泽洋
学号:20172302
实验教师:王志强老师
实验日期:2018年11月5日
必修/选修: 必修
实验内容
(1)参考教材p212,完成链树LinkedBinaryTree的实现(getRight,contains,toString,preorder,postorder;用JUnit或自己编写驱动类对自己实现的LinkedBinaryTree进行测试,提交测试代码运行截图,要全屏,包含自己的学号信息
(2)基于LinkedBinaryTree,实现基于(中序,先序)序列构造唯一一棵二㕚树的功能,比如给出中序HDIBEMJNAFCKGL和先序ABDHIEJMNCFGKL,构造出附图中的树;用JUnit或自己编写驱动类对自己实现的功能进行测试,提交测试代码运行截图,要全屏,包含自己的学号信息
(3)自己设计并实现一颗决策树;提交测试代码运行截图,要全屏,包含自己的学号信息
(4)输入中缀表达式,使用树将中缀表达式转换为后缀表达式,并输出后缀表达式和计算结果;提交测试代码运行截图,要全屏,包含自己的学号信息
(5)完成PP11.3;提交测试代码运行截图,要全屏,包含自己的学号信息
(6)参考http://www.cnblogs.com/rocedu/p/7483915.html对Java中的红黑树(TreeMap,HashMap)进行源码分析,并在实验报告中体现分析结果。(C:\Program Files\Java\jdk-11.0.1\lib\src\java.base\java\util)
实验过程及结果
(1)实验一
完成链树LinkedBinaryTree的实现(getRight,contains,toString,preorder,postorder)
这里的方法编写在学习树时都有写过,所以直接编写了测试类,实验结果如图
(2)实验二
基于LinkedBinaryTree,实现基于(中序,先序)序列构造唯一一棵二㕚树的功能,这个需要新建类,类中写了公有方法generate0,generate0再去调用私有方法generate,
这个主要是利用传进来的先序和中序的字符串,确定根结点,然后再确定其左右孩子,接下来递归该过程,直至将该字符串读取完成。
实验结果截图:
(3)实验三
自己设计并实现一颗决策树,设计了一棵决策树去确定1至6之间的某个数。
11
Is the number greater than 3?
Is the number greater than 2?
Is the number greater than 4?
Is the number greater than 1?
Is the number greater than 5?
The number is 1.
The number is 2.
The number is 3.
The number is 4.
The number is 5.
The number is 6.
3 5 6
1 3 7
4 9 10
2 8 4
0 1 2
实验结果见图:
(4)实验四
输入中缀表达式,使用树将中缀表达式转换为后缀表达式,这里是使用两个栈,一个是操作符栈,另一个是操作数栈,其中操作数栈是操作数是以树的类型进行存储的。实验结果见