java二叉树先序中序后序递归实现

package com.test;

public class BinaryTree {

    private BinaryTree lchild;
    private BinaryTree rchild;
    private Object data;

    public BinaryTree(BinaryTree l, BinaryTree r, Object data) {
        lchild = l;
        rchild = r;
        this.data = data;
    }

    public static void main(String[] args) {
        BinaryTree I = new BinaryTree(null, null, 'I');
        BinaryTree H = new BinaryTree(null, I, 'H');
        BinaryTree G = new BinaryTree(null, null, 'G');
        BinaryTree F = new BinaryTree(null, null, 'F');
        BinaryTree E = new BinaryTree(F, G, 'E');
        BinaryTree D = new BinaryTree(null, null, 'D');
        BinaryTree C = new BinaryTree(H, null, 'C');
        BinaryTree B = new BinaryTree(D, E, 'B');
        BinaryTree A = new BinaryTree(B, C, 'A');
        DLR(A);
        System.out.println();
        LDR(A);
        System.out.println();
        LRD(A);
        System.out.println();
    }

    // 递归先序遍历
    public static void DLR(BinaryTree root) {
        if (root == null)
            return;
        visit(root);
        if (root.lchild != null)
            DLR(root.lchild);
        if (root.rchild != null)
            DLR(root.rchild);
    }

    // 递归中序遍历
    public static void LDR(BinaryTree root) {
        if (root == null)
            return;
        if (root.lchild != null)
            LDR(root.lchild);
        visit(root);
        if (root.rchild != null)
            LDR(root.rchild);
    }

    // 递归后序遍历
    public static void LRD(BinaryTree root) {
        if (root == null)
            return;
        if (root.lchild != null)
            LRD(root.lchild);
        if (root.rchild != null)
            LRD(root.rchild);
        visit(root);
    }

    public static void visit(BinaryTree bt) {
        System.out.print(bt.data + " ");
    }
}
 

转载于:https://my.oschina.net/MonkeyDJ/blog/789479

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值