Tree形结构

来源:互联网 发布:win7阻止安装软件 编辑:程序博客网 时间:2024/06/05 11:46

首先需要去理解二叉树的定义 : ------

/**

* 二叉树 * 每个结点最多有两个子结点 * * Created by on 2017/11/2. */public class BinaryTree implements Serializable { private static final long serialVersionUID = -1966626461756678149L; private String t; private BinaryTree lchild; private BinaryTree rchild; public BinaryTree() { } public BinaryTree(String t) { this.t = t; } public BinaryTree(String t, BinaryTree lchild, BinaryTree rchild) { this.t = t; this.lchild = lchild; this.rchild = rchild; } public String getT() { return t; } public void setT(String t) { this.t = t; } public BinaryTree getLchild() { return lchild; } public void setLchild(BinaryTree lchild) { this.lchild = lchild; } public BinaryTree getRchild() { return rchild; } public void setRchild(BinaryTree rchild) { this.rchild = rchild; } /**构建指针*/ public void setChild(BinaryTree lchild,BinaryTree rchild){ this.lchild = lchild; this.rchild = rchild; }}


先创建树的vo


/** * 二叉树 * Created by on 2017/11/2. */public class BinaryTreeUtils {    /**前序遍历算法     * 1,结点     * 2,左分支     * 3,右分支     * */    public static void preOrderTraverse(BinaryTree T) {        if (T == null) return;        System.out.println(T.getT());        preOrderTraverse(T.getLchild());        preOrderTraverse(T.getRchild());    }    /**中序遍历算法     * 1,左分支先遍历     * 2,结点     * 3,右分支     * */    public static void inOrderTraverse(BinaryTree T) {        if (T == null) return;        inOrderTraverse(T.getLchild());        System.out.println(T.getT());        inOrderTraverse(T.getRchild());    }    /**中序遍历算法     * 1,左分支先遍历     * 2,右分支     * 3,结点     * */    public static void postOrderTraverse(BinaryTree T) {        if (T == null) return;        postOrderTraverse(T.getLchild());        postOrderTraverse(T.getRchild());        System.out.println(T.getT());    }}

树的遍历


/** * Created by on 2017/11/2. */public class BinaryTreeTest {    /**构建树*/    public static BinaryTree createTree(){        BinaryTree A = new BinaryTree("A");        BinaryTree B = new BinaryTree("B");        BinaryTree C = new BinaryTree("C");        BinaryTree D = new BinaryTree("D");        BinaryTree E = new BinaryTree("E");        BinaryTree F = new BinaryTree("F");        BinaryTree G = new BinaryTree("G");        BinaryTree H = new BinaryTree("H");        BinaryTree I = new BinaryTree("I");        BinaryTree J = new BinaryTree("J");        BinaryTree K = new BinaryTree("K");        A.setChild(B,C);        B.setChild(D,E);        D.setLchild(H);        H.setRchild(K);        C.setChild(F,G);        F.setLchild(I);        G.setRchild(J);        return A;    }    @Test    public void  test1(){        BinaryTreeUtils.preOrderTraverse(createTree());    }    @Test    public void test2() {        BinaryTreeUtils.inOrderTraverse(createTree());    }    @Test    public void test3() {        BinaryTreeUtils.postOrderTraverse(createTree());    }}

树的测试



原创粉丝点击