实验室暑期集训大作业

JAVA块大作业

代码部分

  • 封装二叉树结点
public class BitreeNode {
    private BitreeNode left=null;
    private BitreeNode right=null;
    private BitreeNode root=null;
    private String data;

    public BitreeNode getRoot() {
        return root;
    }

    public void setRoot(BitreeNode root) {
        this.root = root;
    }

    public void setLeft(BitreeNode left) {
        this.left = left;
    }

    public void setRight(BitreeNode right) {
        this.right = right;
    }

    public void setData(String data) {
        this.data = data;
    }

    public BitreeNode getLeft() {
        return left;
    }

    public BitreeNode getRight() {
        return right;
    }

    public String getData() {
        return data;
    }
}

  • 封装二叉树类
import java.util.Scanner;

public class Bitree {
    /**
     创建二叉树
     */
    private BitreeNode create() {
        BitreeNode root;
        Scanner input = new Scanner(System.in);
        String n = input.next();
        if(!n.equals("#")){
            root=new BitreeNode();
            root.setData(n);
            root.setLeft(create());
            root.setRight(create());
        }
        else{root=null;}
        return root;
    }
    /**
    提供用户使用方法
    */
    public BitreeNode createBitree(){
        return create();
    }
}

  • 实现类
public class operate {

    /**
    先序遍历
     */
    public static void preorder(BitreeNode root){
        if(root!=null){
        System.out.print(root.getData());
        preorder(root.getLeft());
        preorder(root.getRight());
    }

    }
    /**
     中序遍历
     */
    public static void inorder(BitreeNode root){
        if (root!=null){
            inorder(root.getLeft());
            System.out.print(root.getData());
            inorder(root.getRight());
        }
    }
    /**
     后序遍历
     */
    public static void afterorder(BitreeNode root){
        if (root!=null){
           afterorder(root.getLeft());
           afterorder(root.getRight());
           System.out.print(root.getData());
        }
    }
    /**
     简单的一些操作
     */
    public static void main(String[] args) {
      BitreeNode T =new BitreeNode();
        T.setRoot(new Bitree().createBitree());
        preorder(T.getRoot());
        System.out.println(" ");
        inorder(T.getRoot());
        System.out.println(" ");
        afterorder(T.getRoot());
        System.out.println(" ");
    }
}

设计思路

  • 题目要求封装一个熟悉的数据结构,转而就联想到了二叉树
  • 于是打算封装一个简单的二叉树
  • 用链表存储二叉树,首先封装二叉树的结点,private变量为左右孩子left,right,根root,以及该节点存放的数据data
  • 用get和set提供可供用户使用的方法
  • 然后封装二叉树,用递归的算法建立二叉树,将该方法设为private,同时创建一个可供用户使用的方法;二叉树的封装就完成了
  • 接着用封装的二叉树去实现一些简单的算法,即先序遍历,中序遍历和后序遍历

困难和解决思路

**困难:**在调试程序的时候发现,无论输入哪一组数据都没有输出

解决思路:网络搜索明白了二叉树的输入格式应当如下

image-20210818115051800

心得体会

简单的封装一个数据结构并不难,但也许是我对封装的理解不够深入,并不会用高级的方法封装一个数据结构。而对于封装来说,如何去正确的使用也极为重要,要思考如

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值