二叉树的Java实现

以如图所示的二叉树为例创建二叉树并实现二叉树的遍历(先序遍历、中序遍历、后序遍历)
二叉树

/**
 *  部分代码来自于http://ocaicai.iteye.com/blog/1047397
 */
public class BinaryTree {

    /**
     * 内部类,Node用于存储数据
     * @author 
     */
    private static class Node{
        Node leftChild;  
        Node rightChild;  
        int data;  

        Node(int Data) {  
            leftChild = null;  
            rightChild = null;  
            this.data = Data;  
        }
    }

    /**
     * 创建一个二叉树
     * @return
     */
    private static Node createBinaryTree(){
        Node node1=new Node(1);
        Node node2=new Node(2);
        Node node3=new Node(3);
        Node node4=new Node(4);

        node1.leftChild=node2;
        node1.rightChild=node3;
        node3.leftChild=node4;

        return node1;
    }

    /**
     * 先序遍历
     * @param node
     * 结果应该是 1 2 3 4
     */
    private static void preOrderTraversal(Node node){
        if(node==null){
            return;
        }
        System.out.println(node.data);
        preOrderTraversal(node.leftChild);
        preOrderTraversal(node.rightChild);
    }

    /**
     * 中序遍历
     * @param node
     * 结果应该是 2 1 4 3 
     */
    private static void inOrderTraversal(Node node){
        if(node==null){
            return;
        }
        inOrderTraversal(node.leftChild);
        System.out.println(node.data);
        inOrderTraversal(node.rightChild);
    }

    /**
     * 后序遍历
     * @param node
     * 结果应该是 2 4 3 1
     */
    private static void postOrderTraverse(Node node){
        if(node==null){
            return;
        }
        inOrderTraversal(node.leftChild);
        inOrderTraversal(node.rightChild);
        System.out.println(node.data);
    }

    public static void main(String[] args) {
        Node node=createBinaryTree();
        preOrderTraversal(node);
        inOrderTraversal(node);
        postOrderTraverse(node);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值