二叉樹的三種遍歷(先序遍歷,中序遍歷,後續遍歷)-JAVA語言實現

二叉樹的三種遍歷方式,遞歸實現。

public class TreeNode {
    int value;
    TreeNode leftNode;
    TreeNode rightNode;

    public TreeNode(int value){
        this.value = value;
    }


    public void setLeftNode(TreeNode leftNode) {
        this.leftNode = leftNode;
    }


    public void setRightNode(TreeNode rightNode) {
        this.rightNode = rightNode;
    }

    //前序遍歷
    public void preOrder(){
        System.out.println(value);
        if (leftNode != null){
            leftNode.preOrder();
        }
        if (rightNode != null){
            rightNode.preOrder();;
        }
    }
    //中序遍歷
    public void midOrder(){
        if (leftNode != null){
            leftNode.midOrder();
        }
        System.out.println(value);
        if (rightNode != null){
            rightNode.midOrder();;
        }
    }
    //後序遍歷
    public void postOrder(){
        if (leftNode != null){
            leftNode.postOrder();
        }
        if (rightNode != null){
            rightNode.postOrder();;
        }
        System.out.println(value);
    }
}
public class BinaryTree {
    TreeNode root;

    public void setRoot(TreeNode root) {
        this.root = root;
    }

    public TreeNode getRoot() {
        return root;
    }

    //前序遍歷
    public void preOrder(){
     if (root != null)
        root.preOrder();
    }
    //中序遍歷
    public void midOrder(){
     if (root != null)
        root.midOrder();
    }
    //後序遍歷
    public void postOrder(){
     if (root != null)
        root.postOrder();
    }
}
public class TestBinaryTree {
    public static void main(String[] args) {
        BinaryTree binaryTree = new BinaryTree();
        //創建第一層根節點
        TreeNode root = new TreeNode(1);
        binaryTree.setRoot(root);

        //創建第二層節點
        TreeNode leftNode2 = new TreeNode(2);
        root.setLeftNode(leftNode2);
        TreeNode rightNode2 = new TreeNode(3);
        root.setRightNode(rightNode2);

        //創建第3層節點
        leftNode2.setLeftNode(new TreeNode(4));
        leftNode2.setRightNode(new TreeNode(5));

        rightNode2.setLeftNode(new TreeNode(6));
        rightNode2.setRightNode(new TreeNode(7));

        System.out.println("先序遍歷:");
        binaryTree.preOrder();

        System.out.println("中序遍歷:");
        binaryTree.midOrder();

        System.out.println("後序遍歷:");
        binaryTree.postOrder();


    }
}

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章