JAVA数据结构---二叉树入门

本程序分为四个文件:
节点类:Node.java
二叉树类:BinaryTree.java
访问类:Visit.java
主类测试:MainTest.java

(1)Node.java

public class Node<T> {

    public T data;
    private Node<T> left;
    private Node<T> right;

    // 初始化构造
    public Node() {
        left = null;
        right = null;
    }

    public Node(T tt, Node<T> lef, Node<T> rig) {
        data = tt;
        left = lef;
        right = rig;
    }

    // get方法
    public T getT() {
        return data;
    }

    public Node<T> getLeft() {
        return left;
    }

    public Node<T> getRight() {
        return right;
    }

}

(2)BinaryTree.java

public class BinaryTree<T> {
    private Node<T> root;

    private void preOrder(Node<T> t, Visit vs) {
        if (t != null) {
            vs.print(t.data);
            preOrder(t.getLeft(), vs);
            preOrder(t.getRight(), vs);
        }
    }

    private void midOrder(Node<T> t, Visit vs) {
        if (t != null) {
            midOrder(t.getLeft(), vs);
            vs.print(t.data);
            midOrder(t.getRight(), vs);
        }
    }

    private void postOrder(Node<T> t, Visit vs) {
        if (t != null) {
            postOrder(t.getLeft(), vs);
            postOrder(t.getRight(), vs);
            vs.print(t.data);
        }
    }

    public BinaryTree() {
        root = null;
    }

    public BinaryTree(T tt, BinaryTree<T> lef, BinaryTree<T> rig) {
        Node<T> l, r;
        if (lef == null)
            l = null;
        else
            l = lef.root;

        if (rig == null)
            r = null;
        else
            r = rig.root;

        root = new Node<T>(tt, l, r);
    }

    public void preOrder(Visit vs) {
        preOrder(root, vs);
    }

    public void midOrder(Visit vs) {
        midOrder(root, vs);
    }

    public void postOrder(Visit vs) {
        postOrder(root, vs);
    }

}

(3)Visit.java

public class Visit {

    public void print(Object item) {
        System.out.print(item + " ");
    }

}

(4)MainTest.java

public class MainTest {

    public static void main(String[] args) {

        BinaryTree<String> g = new BinaryTree<String>("G", null, null);
        BinaryTree<String> d = new BinaryTree<String>("D", null, g);
        BinaryTree<String> b = new BinaryTree<String>("B", d, null);
        BinaryTree<String> e = new BinaryTree<String>("E", null, null);
        BinaryTree<String> f = new BinaryTree<String>("F", null, null);
        BinaryTree<String> c = new BinaryTree<String>("C", e, f);
        BinaryTree<String> a = new BinaryTree<String>("A", b, c);

        Visit vs = new Visit();
        System.out.println("前序遍历的结果是:");
        a.preOrder(vs);
        System.out.println();

        System.out.println("中序遍历的结果是:");
        a.midOrder(vs);
        System.out.println();

        System.out.println("后序遍历的结果是:");
        a.postOrder(vs);
        System.out.println();
    }

}

(5)测试结果

前序遍历的结果是:
A B D G C E F 
中序遍历的结果是:
D G B A E C F 
后序遍历的结果是:
G D B E F C A 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值