Tree形结构 - 二叉树的中序 ,先序,后序 的遍历

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

/**

* 二叉树 * 每个结点最多有两个子结点 * * 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());
    }



}

树的测试



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值