210812


Today I learned..


今日学習したコンテンツソース
Source
今日,Javaを用いて簡単なバイナリツリー構造を実現した.

木。


木とは何ですか.
データ構造(接続リストや配列など)は線形構造(データを一列にリスト)であり、ツリー(その名の通り)はサブノードがルートノード(ルートノード)上で枝や葉のように伝播する構造である.
様々な構造があり、その中で今日はバイナリツリー構造が実現されています.(ツリー構造の各ノードには少なくとも2つのサブノードがあります)
class TreeNode {
    private TreeNode left;
    private TreeNode right;
    private Object data;

    public TreeNode(Object item) {
        left = null;
        right = null;
        this.data = item;
    }
    public void addLeftSubTree(TreeNode sub) {
        if (this.left != null) return;
        this.left = sub;
    }
    public void addRightSubTree(TreeNode sub) {
        if (this.right != null) return;
        this.right = sub;
    }
    public Object getData() {
        return this.data;
    }
    public TreeNode getLeftSubTree() {
        return this.left;
    }
    public TreeNode getRightSubTree() {
        return this.right;
    }
}

// 메인 메소드
public static void main(String[] args) {
        TreeNode node1 = new TreeNode(1);
        TreeNode node2 = new TreeNode(2);
        TreeNode node3 = new TreeNode(3);
        TreeNode node4 = new TreeNode(4);
        TreeNode node5 = new TreeNode(5);
        TreeNode node6 = new TreeNode(6);
        TreeNode node7 = new TreeNode(7);

	// 트리 연결
        node1.addLeftSubTree(node2);
        node1.addRightSubTree(node3);
        node2.addLeftSubTree(node4);
        node2.addRightSubTree(node5);
        node3.addLeftSubTree(node6);
        node3.addRightSubTree(node7);
    }
左ノードと右ノードの値をクラスとして保存し、サブノードを各ノードに接続すると完了します.😄

ツリー巡り


もちろん、このような木は何の意味もありません.私たちは探求します.ナビゲーションは簡単に後列、中列、前列巡回ナビゲーションに分けられます.ルート・ディレクトリから開始すると、各ナビゲーション・メソッドには次の特徴があります.
  • 前衛巡視:ルートディレクトリから左サブノードと右サブノードの順にナビゲートします.
  • 中尉パトロール:最も左側のノードから、親ノードに接続された右側のノードを1つずつブラウズします.
  • 後方パトロール:左端ノードから右端ノードまで、親ノードを順にナビゲートします.
  • 実施内容:
        /**
         * 전위 순회
         * @param node
         */
        static void preOrder(TreeNode node) {
            if (node == null) return;
            System.out.format(" %s ", node.getData());
            preOrder(node.getLeftSubTree());
            preOrder(node.getRightSubTree());
        }
    
        /**
         * 중위 순회
         * @param node
         */
        static void inOrder(TreeNode node) {
            if (node == null) return;
            inOrder(node.getLeftSubTree());
            System.out.format(" %s ", node.getData());
            inOrder(node.getRightSubTree());
        }
    
        /**
         * 후위 순회
         * @param node
         */
        static void postOrder(TreeNode node) {
            if (node == null) return;
            postOrder(node.getLeftSubTree());
            postOrder(node.getRightSubTree());
            System.out.format(" %s ", node.getData());
        }

    Tomorrow I will learn..

  • これが符号化試験アルゴリズム
  • である
  • Vue.勉強する

    Comment

  • は確かに符号ブロックとして括弧が多く使われている言語の人で、何かを開発する際にPythonのような開行文字が必要な言語よりもJavaのような硬い(?)言叶がもっと楽に见える奇妙な気持ち.
  • 明日は早く勉强を始めたいです.