第二次实验报告
2017-2018-1 20162306 实验二 树 实验报告
实验一:树-1-实现二叉树
- 实验要求:
参考教材p375,完成链树LinkedBinaryTree的实现(getRight,contains,toString,preorder,postorder)
用JUnit或自己编写驱动类对自己实现的LinkedBinaryTree进行测试,提交测试代码运行截图,要全屏,包含自己的学号信息
课下把代码推送到代码托管平台
- 实验过程:
1、contain方法:判断树中是否有该元素,用find方法实现该方法,存在就返回true,不存在就返回false。
代码如下:
public boolean contains (T target) {
if (root.find(target) == null)
return false;
else
return true;
}
2、isEmpty方法:判断树中是否为空,为空则返回true,不为空则返回false。
public boolean isEmpty() {
return (size() == 0);
}
3、getRight方法:与getLeft相同,返回右结点值。
public LinkedBinaryTree<T> getRight() throws EmptyCollectionException {
if (root == null)
throw new EmptyCollectionException("Get left operation "
+ "failed. The tree is empty.");
LinkedBinaryTree<T> result = new LinkedBinaryTree<T>();
result.root = root.getRight();
return result;
}
4、preorder()和postorder()方法:树的前序遍历和后序遍历
-
实验截图
-
代码链接
LinkedBinaryTree
LinkedBinaryTreeTest
实验二:树-2-中序先序序列构造二叉树
- 实验要求:
基于LinkedBinaryTree,实现基于(中序,先序)序列构造唯一一棵二㕚树的功能,比如教材P372,给出HDIBEMJNAFCKGL和ABDHIEJMNCFGKL,构造出附图中的树
用JUnit或自己编写驱动类对自己实现的功能进行测试,提交测试代码运行截图,要全屏,包含自己的学号信息
课下把代码推送到代码托管平台
-
实验过程:
这个实验起初没有什么下手点,参考了网才得以实现上的资料,才得以实现。 -
实验截图:
-
代码链接
实验三:树-3-决策树
- 实验要求:
完成PP16.6
提交测试代码运行截图,要全屏,包含自己的学号信息
课下把代码推送到代码托管平台
-
实验过程:
这个实验比较简单,代码书上都已基本实现,主要在于逻辑要合理。 -
实验截图:
-
代码链接
BackPainAnalyzer
BackPainExpert
实验五:树-5-二叉查找树
- 实验要求:
完成PP17.1
提交测试代码运行截图,要全屏,包含自己的学号信息
课下把代码推送到代码托管平台
-
实验过程:
这个实验相对也是比较容易,主要任务是实现findMax和findMin方法,来查找最大或最小的元素 -
实验截图:
-
代码链接