91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java通過遞歸進行二叉樹遍歷的代碼

發布時間:2020-04-08 09:40:38 來源:網絡 閱讀:278 作者:gugudajiao 欄目:編程語言

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

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;
    }

}

輸出結果:

生成的二叉樹:  
            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   
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

庄河市| 乡城县| 磴口县| 怀化市| 濮阳市| 杭州市| 成安县| 贡觉县| 锡林浩特市| 增城市| 寿阳县| 平塘县| 石家庄市| 富顺县| 肥城市| 遵义县| 虹口区| 双牌县| 博白县| 佛坪县| 彭阳县| 临汾市| 广西| 湘西| 华池县| 聂拉木县| 宁陕县| 察隅县| 仁怀市| 微山县| 东乡县| 新巴尔虎左旗| 林西县| 东丽区| 天等县| 星子县| 呼和浩特市| 阜平县| 莆田市| 大荔县| 辽源市|