zoukankan      html  css  js  c++  java
  • 20192319 2020-2021-1 《数据结构与面向对象程序设计》实验八报告

    实验七报告

    • 课程:《程序设计与数据结构》
    • 班级: 1923
    • 姓名: 李歆韵
    • 学号:20192319
    • 实验教师:王志强
    • 实验日期:2020年12月6日
    • 必修/选修: 必修

    1.实验内容

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

    2.实验过程与结果

    1. 参考教材PP16.1,完成链树LinkedBinaryTree的实现(getRight,contains,toString,preorder,postorder)
      用JUnit或自己编写驱动类对自己实现的LinkedBinaryTree进行测试,提交测试代码运行截图,要全屏,包含自己的学号信息
      课下把代码推送到代码托管平台
      代码:
    public class LinkedBinaryTreeTest
    {
        public static void main(String args[]) {
            //构建结点
            BinaryTreeNode node1 = new BinaryTreeNode(12);
            BinaryTreeNode node2 = new BinaryTreeNode(34);
            BinaryTreeNode node3 = new BinaryTreeNode(55);
            BinaryTreeNode node4 = new BinaryTreeNode(81);
            BinaryTreeNode node5 = new BinaryTreeNode(99);
            System.out.println("Node1: "+node1.getElement());
            System.out.println("Node2: "+node2.getElement());
            System.out.println("Node3: "+node3.getElement());
            System.out.println("Node4: "+node4.getElement());
            System.out.println("Node5: "+node5.getElement());
            //构建二叉树
            LinkedBinaryTree tree1 = new LinkedBinaryTree(node1.getElement());
            LinkedBinaryTree tree2 = new LinkedBinaryTree(node2.getElement());
            LinkedBinaryTree tree3 = new LinkedBinaryTree(node3.getElement(),tree1,tree2);
            LinkedBinaryTree tree5 = new LinkedBinaryTree(node5.getElement());
            LinkedBinaryTree tree4 = new LinkedBinaryTree(node4.getElement(), tree5, tree3);
    
    
    //        node4.setLeft(node5);
    //        node4.setRight(node3);
    //        node3.setRight(node2);
    //        node3.setLeft(node1);
            System.out.println("Tree: "+tree4.toString());
    //        System.out.println("Is node1 a leaf? " + node1.isLeaf(node1));
    //        System.out.println("Is node2 a leaf? " + node2.isLeaf(node2));
    //        System.out.println("Is node3 a leaf? " + node3.isLeaf(node3));
    //        System.out.println("Is node4 a leaf? " + node4.isLeaf(node4));
    //        System.out.println("Is node5 a leaf? " + node5.isLeaf(node5));
    
            System.out.println("Is tree empty? " + tree4.isEmpty());
    
            System.out.println("Height of tree: "+tree4.getHeight());
    
            System.out.println("Does tree contain '19'? " + tree4.contains("19"));
    
            System.out.println("Get right child: "+tree4.getRight().toString());
    
            System.out.print("preorder: ");
            tree4.toPreString();
            System.out.println();
            System.out.print("postorder: ");
            tree4.toPostString();
    
        }
    }
    


    1. 基于LinkedBinaryTree,实现基于(中序,先序)序列构造唯一一棵二㕚树的功能,比如给出中序HDIBEMJNAFCKGL和先序ABDHIEJMNCFGKL,构造出附图中的树
      用JUnit或自己编写驱动类对自己实现的功能进行测试,提交测试代码运行截图,要全屏,包含自己的学号信息
      课下把代码推送到代码托管平台
      代码:
    public class LinkedBinaryTreeTest2
    {
        public static void main(String[] args) {
            String[] inorder = new String[]{"H","D","I","B","E","M","J","N","A","F","C","K","G","L"};//中序
            String[] preorder = new String[]{"A","B","D","H","I","E","J","M","N","C","F","G","K","L"};//先序
    
            LinkedBinaryTree2 tree = new LinkedBinaryTree2();
    
            tree.RebuildTree(inorder,preorder);
            System.out.println(tree.toString());
        }
    }
    

    1. 自己设计并实现一颗决策树
      提交测试代码运行截图,要全屏,包含自己的学号信息
      课下把代码推送到代码托管平台

    2. 输入中缀表达式,使用树将中缀表达式转换为后缀表达式,并输出后缀表达式和计算结果(如果没有用树,正常评分。如果用到了树,即使有小的问题,也酌情给满分)
      提交测试代码运行截图,要全屏,包含自己的学号信息

    3.其它

    这一次实验主要考察我们对树的结构以及其特点的掌握,涉及到了树的构建、通过前序与中序构造树还有决策树的构建。虽然在最后一个中缀转后缀中我没能用树的结构来实现,但是通过栈和队列两种线性结构来实现这个功能难度依然不小,花费时间较多。

    参考资料

  • 相关阅读:
    【BZOJ1093】【ZJOI2007】最大半联通子图 [DP][Tarjan]
    【BZOJ1926】【SDOI2010】粟粟的书架 [主席树]
    【BZOJ4069】【APIO2015】巴厘岛的雕塑 [贪心][DP]
    【BZOJ2815】【ZJOI2012】灾难 [LCA]
    【BZOJ3453】XLkxc [拉格朗日插值法]
    【BZOJ2850】巧克力王国 [KD-tree]
    《类和对象》
    @RequestMapping映射请求
    010-Python-socket编程
    SSH-Struts第二弹:一个Form提交两个Action
  • 原文地址:https://www.cnblogs.com/Tempo-Alex/p/14104048.html
Copyright © 2011-2022 走看看