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

    课程:《程序设计与数据结构》
    班级: 1823
    姓名:张端云
    学号:20182303
    实验教师:王志强
    实验日期:2019年11月7日
    必修/选修: 必修

    1.实验内容

    1. 参考教材PP16.1,完成链树LinkedBinaryTree的实现(getRight,contains,toString,preorder,postorder),用JUnit或自己编写驱动类对自己实现的LinkedBinaryTree进行测试。
    2. 基于LinkedBinaryTree,实现基于(中序,先序)序列构造唯一一棵二㕚树的功能,比如给出中序HDIBEMJNAFCKGL和先序ABDHIEJMNCFGKL,构造出附图中的树,用JUnit或自己编写驱动类对自己实现的功能进行测试。
    3. 自己设计并实现一颗决策树并完成测试。
    4. 输入中缀表达式,使用树将中缀表达式转换为后缀表达式,并输出后缀表达式和计算结果。

    2. 实验过程及结果

    point1

    完成链树LinkedBinaryTree的实现(getRight,contains,toString,preorder,postorder),并完成测试。

    point2

    基于LinkedBinaryTree,实现基于(中序,先序)序列构造唯一一棵二叉树的功能,并完成测试。

    设计思路:
    (1)确定树的根结点;(先序遍历的第一个结点就是二叉树的根)
    (2)求解树的子树;(找到根在中序遍历的位置,位置左边就是二叉树的左孩子,位置右边是二叉树的右孩子,如果根结点左边或右边为空,那么该方向子树为空;如果根节点左边和右边都为空,那么根节点已经为叶结点)
    (3)对二叉树的左、右孩子递归进行步骤(1)(2),直到求出二叉树的结构为止。

    point3

    自己设计并实现一颗决策树并完成测试。
    我设计的决策树名为“史上最准的心理测试”,以下展示其中一种测试结果。

    设计思路如下

    point4

    输入中缀表达式,使用树将中缀表达式转换为后缀表达式,并输出后缀表达式和计算结果。

    • 表达式二叉树的定义
      举个栗子,表达式:(a+b×(c-d))-e/f。将数字放在叶子节点,将操作符放在分支节点,就构成了一个二叉树,由于存储的是一个表达式,称之为“表达式二叉树”。
    • 表达式二叉树的构建步骤
      1.创建节点对象;
      2.辨析出操作符与数据,存放在相应的列表(队列)中;
      3.取出前两个数字和一个操作符,组成一个新的数字节点;
      4.重复第3步,直到操作符取完为止;
      5.让根节点等于最后一个节点。

    代码托管

    3. 实验过程中遇到的问题和解决过程

    • 问题1:如何优雅的利用递归思想解决问题?
    • 问题1解决方案:递归分析三步:
    1. 找整个递归的终止条件:递归应该在什么时候结束?
    2. 找返回值:应该给上一级返回什么信息?
    3. 本级递归应该做什么:在这一级递归中,应该完成什么任务?
    • 问题2:如何理解java中的Iterator
    • 问题2解决方案:
      java.util.Iterator
       在Java中Iterator为一个接口,它只提供了迭代的基本规则。在JDK中它是这样定义的:对Collection进行迭代的迭代器。迭代器取代了Java Collection Framework中的Enumeration。迭代器与枚举有两点不同:
        1. 迭代器在迭代期间可以从集合中移除元素。
        2. 方法名得到了改进,Enumeration的方法名称都比较长。
      其接口定义如下:
    package java.util;
    public interface Iterator<E> {
        boolean hasNext();//判断是否存在下一个对象元素
    
        E next();//获取下一个元素
    
        void remove();//移除元素
    }
    

    参考资料

  • 相关阅读:
    python-杂烩
    24 Python 对象进阶
    23 Python 面向对象
    22 Python 模块与包
    21 Python 异常处理
    20 Python 常用模块
    18 Python 模块引入
    2 Python 基本语法
    1 Python 环境搭建
    3 Python os 文件和目录
  • 原文地址:https://www.cnblogs.com/zdyyy/p/11876249.html
Copyright © 2011-2022 走看看