java一个简单的二叉树

package it.cast;

import java.util.List;

public class BTree {
    private BTree leftChild;
    private BTree rightChild;
    private BTree root;
    private Object data;

    public BTree(BTree leftChild, BTree rightChild, Object data) {
        this.leftChild = leftChild;
        this.rightChild = rightChild;
        this.data = data;
    }

    // 创建构造方法,用于接收BTree中的数据
    public BTree(Object data) {
        this(null, null, data);
    }

    public BTree() {
    }

    // 创建树
    public void CreateBtree(Object[] obj) {
        BTree[] b = new BTree[obj.length];
        for (int i = 0; i < obj.length; i++) {

            BTree ss = new BTree(obj[i]);// 将数据封装成树节点
            b[i] = ss;// 传入数组中
        }
        root = b[0];// 将第一个数放入根节点中
        // 按左右的循序放入节点
        for (int i = 0; i < b.length / 2; i++) {
            // 奇数位的数据放入左节点中
            b[i].leftChild = b[2 * i + 1];
            if (2 * i + 2 < b.length) {// 判断偶数位是否溢出
                b[i].rightChild = b[2 * i + 2];
            }
        }
    }
   //先序遍历
    public void preorder(BTree b) {
        if (b != null) {
            visit(b.getData());
            preorder(b.leftChild);
            preorder(b.rightChild);
        }

    }
    //中序遍历
    public void middens(BTree b) {
        if(b!=null) {
            middens(b.leftChild);
            visit(b.getData());
            middens(b.rightChild);
        }
        
    }
    //后序遍历
    public void After(BTree b) {
        if(b!=null) {
            After(b.leftChild);
            After(b.rightChild);
            visit(b.getData());
            
        }
    }

    private void visit(Object data2) {
        System.out.print(data2 + " ");

    }

扫描二维码关注公众号,回复: 4784460 查看本文章

    private Object getData() {
        return data;
    }

    private BTree getRoot() {
        return root;
    }

    public static void main(String[] args) {
        BTree b = new BTree();
        Object[] obj = { 0, 1, 2, 3, 4, 5, 6, 7 };
        b.CreateBtree(obj);
        b.preorder(b.getRoot());
        System.out.println();
        b.middens(b.getRoot());
        System.out.println();
        b.After(b.getRoot());
    }

}
 

猜你喜欢

转载自blog.csdn.net/weixin_42345223/article/details/85833685
今日推荐