二分木のプレオーダー、ミドルオーダー、およびその後のトラバーサル[Java]

夫のタオゴンは昔清风からありますが、あえて彼を男と呼ぶのは誰ですか?
ここに画像の説明を挿入


前書き

コンピュータサイエンスでは、二分木(英語:)Binary treeはノード数が最も多い只有两个分支ツリー構造です(つまり、分岐次数が2より大きいノードはありません)。ブランチは通常「左子树」または「右子树と呼ばれます。二分木には枝があります左右次序不能随意颠倒

1つは、ノードクラスを書き込む

一个节点これは、一个对象このように作成する必要があることを意味しTreeNode root=new TreeNode(10)ます。これにより、ルートノードが作成されます。これは単純so easy根节点、値はです10。10個のノードを作成する必要ある場合(これは種類です小圈圈)、10個のオブジェクトを作成する必要があります(new 10次) 。ノードクラスは、次の2つの主要な属性、いずれかを含むleftと1right保存する左孩纸、それぞれを右孩纸それらの中で、valは私が变量ストレージのためにランダムに取得するもの数据です。

ここに画像の説明を挿入

public class TreeNode {
    
    
    int val; //数据
    TreeNode left; //左孩纸
    TreeNode right; // 右孩纸

    TreeNode() {
    
    }
    
    TreeNode(int val) {
    
    
        this.val = val;
    }

    TreeNode(int val, TreeNode left, TreeNode right) {
    
    
        this.val = val;
        this.left = left;
        this.right = right;
    }
}

次に、二分木をトラバースします

プレオーダートラバーサル

    public static void preTraversal(TreeNode root) {
    
    
        if (root != null) {
    
    
            System.out.println(root.val);
            preTraversal(root.left);
            preTraversal(root.right);
        }
    }

インオーダートラバーサル

    public static void inTraversal(TreeNode root) {
    
    
        if (root != null) {
    
    
            inTraversal(root.left);
            System.out.println(root.val);
            inTraversal(root.right);
        }
    }

注文後のトラバーサル

    private static void posTraversal(TreeNode root) {
    
    
        if (root != null) {
    
    
            posTraversal(root.left);
            posTraversal(root.right);
            System.out.println(root.val);
        }
    }

三、木を作る

package com.breez.dsa.tree.demo1;

public class Tree {
    
    

   public static void preTraversal(TreeNode root) {
    
    
        ...
    }

    public static void inTraversal(TreeNode root) {
    
    
       ...
    }

    private static void posTraversal(TreeNode root) {
    
    
        ...
    }


    public static void main(String[] args) {
    
    
        TreeNode root = new TreeNode(3);
        TreeNode root2 = new TreeNode(9);
        TreeNode root3 = new TreeNode(5);
        TreeNode root4 = new TreeNode(6);
        TreeNode root5 = new TreeNode(15);
        TreeNode root6 = new TreeNode(7);
        TreeNode root7 = new TreeNode(8);

        root.left = root2;
        root.right = root3;
        root2.left = root4;
        root2.right = root5;
        root3.left = root6;
        root6.left = root7;
        
        System.out.println("=================先序遍历=====================");
        preTraversal(root);
        System.out.println("=================中序遍历=====================");
        inTraversal(root);
        System.out.println("=================后序遍历=====================");
        posTraversal(root);
    }

}


次のコード行を使用して、次の図に示すコードを作成しました。二叉树

root.left = root2;
root.right = root3;
root2.left = root4;
root2.right = root5;
root3.left = root6;
root6.left = root7;

ここに画像の説明を挿入
运行结果

=================先序遍历=====================
3
9
6
15
5
7
8
=================中序遍历=====================
6
9
15
3
8
7
5
=================后序遍历=====================
6
15
9
8
7
5
3

最後に一言:我太菜了

ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/qq_43073558/article/details/114260896