java实现二叉树的递归方式遍历

刚刚看了一下数据结构,有了些兴致实现一下Java中的二叉树。因为二叉树涉及到的主要知识是二叉树的遍历,所以这里简单实现一下。

先定义一下二叉树的节点类如下:

class Tree{

    //定义一颗二叉树
     Tree leftTree;//定义左子树
     Tree rightTree;//定义右子树
     Object data;//定义存储的数据
    Tree(){}
    //省略getter/setter/private....别这样

}

接下来写主类

public class MyTree{
    private Tree root;//定义一个根树root

    public void list(Tree root) {
        if(root == null) {
        //根节点为空就不遍历了,因为采用递归,并不总是是根节点root,名称而已
            return;
        }else {

            //根据以下三者的顺序可以组成前序,中序和后序遍历
            //这里是前序遍历
            System.out.print(root.data +", ");

            if(root.leftTree != null){
                list(root.leftTree);
            }

            if(root.rightTree !=null) {
                list(root.rightTree);
            }
        }
        //主要代码就是这段递归,非递归实现现在没有思路
    }

    public static void main(String argc[]) {
        MyTree mt = new MyTree();

        //为这颗树添加内容

        Tree t1 = new Tree();
        t1.data = "a";

        Tree t2 = new Tree();
        t2.data = "b";

        Tree t3 = new Tree();
        t3.data = "c";

        Tree t4 = new Tree();
        t4.data = "d";

        Tree t5 = new Tree();
        t5.data = "e";

        Tree t6 = new Tree();
        t6.data = "f";

        Tree t7 = new Tree();
        t7.data = "g";


        //为树与树之间创建关联
        t1.leftTree = t2;
        t1.rightTree = t5;

        t2.leftTree = t3;
        t2.rightTree = t4;

        t5.rightTree =t6;

        t6.leftTree = t7;

        //开始从根节点遍历
        mt.list(t1);


    }

}

输出结果:

Compiling MyTree.java......
------------
a, b, c, d, e, f, g,

end:
图片来自网络
如果有其它想要实现的数据结构,欢迎一起讨论与实现

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值