java实现二叉树的链式存储结构、先序遍历建立二叉树、先序遍历二叉树

该博客主要介绍了使用Java实现二叉树的先序建立和遍历。首先定义了二叉树的数据结构,采用二叉链表形式。接着给出先序建立二叉树的方法,以特定输入格式构建树。然后实现先序遍历二叉树的函数,并提供测试代码及测试结果。

1、二叉树的数据结构:二叉链表

package BT;

public class BinearyTree<E> {
        E data; 
        BinearyTree<E> lchild;
        BinearyTree<E> rchild;
        public BinearyTree(E data){
            this.data=data;
        }
}

2、先序建立二叉树:

A B D * F * * * C E * * *:*代表为null

private static BinearyTree<String> createBinaryTreeByPreorder(BinearyTree<String> bt) {
        // TODO Auto-generated method stub
        System.out.println("请输入当前节点的数据域:");
         data=scan.nextLine();
         if(data.equals("*")){
             bt=null;
         }else{
             bt=new BinearyTree<String>(data);
             bt.lchild= createBinaryTreeByPreorder(bt.lchild);
             bt.rchild= createBinaryTreeByPreorder(bt.rchild);
         }
         return bt;
    }

3、先序遍历二叉树

private static void preOrder(BinearyTree<String> root) {
        // TODO Auto-generated method stub
        if(root!=null) {
            System.out.println(root.data);
            preOrder( root.lchild);
            preOrder( root.rchild);
        }
    }
4、测试代码:

public class CreateBinaryTreeByPreorder {
    static Scanner scan;
    static String data;
    static {scan=new Scanner(System.in);}

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        BinearyTree<String> root = null;
        root=createBinaryTreeByPreorder(root);
        //System.out.println(root.lchild.data);
        preOrder(root);
    }

    private static void preOrder(BinearyTree<String> root) {
        // TODO Auto-generated method stub
        if(root!=null) {
            System.out.println(root.data);
            preOrder( root.lchild);
            preOrder( root.rchild);
        }
    }

    private static BinearyTree<String> createBinaryTreeByPreorder(BinearyTree<String> bt) {
        // TODO Auto-generated method stub
        System.out.println("请输入当前节点的数据域:");
         data=scan.nextLine();
         if(data.equals("0")){
             bt=null;
         }else{
             bt=new BinearyTree<String>(data);
             bt.lchild= createBinaryTreeByPreorder(bt.lchild);
             bt.rchild= createBinaryTreeByPreorder(bt.rchild);
         }
         return bt;
    } 
}
测试结果:

请输入当前节点的数据域:
A
请输入当前节点的数据域:
B
请输入当前节点的数据域:
D
请输入当前节点的数据域:
*
请输入当前节点的数据域:
F
请输入当前节点的数据域:
*
请输入当前节点的数据域:
*
请输入当前节点的数据域:
*
请输入当前节点的数据域:
*
请输入当前节点的数据域:
E
请输入当前节点的数据域:
*
请输入当前节点的数据域:
*
请输入当前节点的数据域:
*
A B D F C E 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值