Java通過遞歸進行二叉樹遍歷的代碼-創(chuàng)新互聯(lián)

寫代碼過程中,將寫代碼過程重要的代碼片段收藏起來,下面的代碼是關(guān)于Java通過遞歸進行二叉樹遍歷的代碼,應該是對各朋友有一些好處。

創(chuàng)新互聯(lián)公司長期為上千余家客戶提供的網(wǎng)站建設(shè)服務,團隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務;打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為清鎮(zhèn)企業(yè)提供專業(yè)的做網(wǎng)站、成都網(wǎng)站設(shè)計,清鎮(zhèn)網(wǎng)站改版等技術(shù)服務。擁有10余年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。
package com.wzs;

public class TestBinaryTree {
    public static void main(String[] args) {
        Node<String> g = new Node<String>("G", null, null);
        Node<String> e = new Node<String>("E", null, null);
        Node<String> f = new Node<String>("F", null, null);
        Node<String> d = new Node<String>("D", null, g);
        Node<String> b = new Node<String>("B", d, e);
        Node<String> c = new Node<String>("C", null, f);
        Node<String> a = new Node<String>("A", b, c);

        System.out.println("生成的二叉樹:");
        System.out.println("            A");
        System.out.println("            |     ");
        System.out.println("       |---------|");
        System.out.println("       B         C");
        System.out.println("       |         |");
        System.out.println("  |---------|     -----|");
        System.out.println("  D         E          F");
        System.out.println("  |");
        System.out.println("   ----|");
        System.out.println("       G");

        System.out.println("二叉樹深度:" + BinaryTree.getDepth(a));

        System.out.print("前序遍歷:");
        BinaryTree.priorderTraversal(a);
        System.out.println();

        System.out.print("中序遍歷:");
        BinaryTree.inorderTraversal(a);
        System.out.println();

        System.out.print("后序遍歷:");
        BinaryTree.postorderTraversal(a);
        System.out.println();
    }
}

class BinaryTree {
    static <T> void priorderTraversal(Node<T> node) {
        if (node != null) {
            visitNode(node);
            priorderTraversal(node.getLeftChild());
            priorderTraversal(node.getRightChild());
        }
    }

    static <T> void inorderTraversal(Node<T> node) {
        if (node != null) {
            inorderTraversal(node.getLeftChild());
            visitNode(node);
            inorderTraversal(node.getRightChild());
        }
    }

    static <T> void postorderTraversal(Node<T> node) {
        if (node != null) {
            postorderTraversal(node.getLeftChild());
            postorderTraversal(node.getRightChild());
            visitNode(node);
        }
    }

    static <T> int getDepth(Node<T> node) {
        if (node == null) {
            return 0;
        }
        int leftDepth = 0;
        int rightDepth = 0;
        leftDepth = getDepth(node.getLeftChild());
        rightDepth = getDepth(node.getRightChild());
        return (leftDepth > rightDepth ? leftDepth : rightDepth) + 1;
    }

    static <T> void visitNode(Node<T> node) {
        System.out.print(node.getKey() + " ");
    }
}

class Node<T> {
    private T key;
    private Node<T> leftChild;
    private Node<T> rightChild;

    public Node() {

    }

    public Node(T key, Node<T> leftChild, Node<T> rightChild) {
        super();
        this.key = key;
        this.leftChild = leftChild;
        this.rightChild = rightChild;
    }

    public T getKey() {
        return key;
    }

    public void setKey(T key) {
        this.key = key;
    }

    public Node<T> getLeftChild() {
        return leftChild;
    }

    public void setLeftChild(Node<T> leftChild) {
        this.leftChild = leftChild;
    }

    public Node<T> getRightChild() {
        return rightChild;
    }

    public void setRightChild(Node<T> rightChild) {
        this.rightChild = rightChild;
    }

}

輸出結(jié)果:

生成的二叉樹:  
            A  
            |       
       |---------|  
       B         C  
       |         |  
  |---------|     -----|  
  D         E          F  
  |  
   ----|  
       G  
二叉樹深度:4  
前序遍歷:A B D G E C F   
中序遍歷:D G B E A C F   
后序遍歷:G D E B F C A   

另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。

新聞標題:Java通過遞歸進行二叉樹遍歷的代碼-創(chuàng)新互聯(lián)
文章路徑:http://muchs.cn/article34/ceospe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)建站、響應式網(wǎng)站、搜索引擎優(yōu)化網(wǎng)站設(shè)計、電子商務、網(wǎng)頁設(shè)計公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁設(shè)計