第二次实验报告

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或自己编写驱动类对自己实现的功能进行测试,提交测试代码运行截图,要全屏,包含自己的学号信息

课下把代码推送到代码托管平台

  • 实验过程:
    这个实验起初没有什么下手点,参考了网才得以实现上的资料,才得以实现。

  • 实验截图:

  • 代码链接

TreeNode

实验三:树-3-决策树

  • 实验要求:
    完成PP16.6

提交测试代码运行截图,要全屏,包含自己的学号信息

课下把代码推送到代码托管平台

  • 实验过程:
    这个实验比较简单,代码书上都已基本实现,主要在于逻辑要合理。

  • 实验截图:

  • 代码链接

BackPainAnalyzer
BackPainExpert

实验五:树-5-二叉查找树

  • 实验要求:
    完成PP17.1

提交测试代码运行截图,要全屏,包含自己的学号信息

课下把代码推送到代码托管平台

  • 实验过程:
    这个实验相对也是比较容易,主要任务是实现findMax和findMin方法,来查找最大或最小的元素

  • 实验截图:

  • 代码链接

LinkedBinarySearchTreeTest
LinkedBinarySearchTree

原文地址:https://www.cnblogs.com/guominxiaocao/p/7751975.html