二分探索木の挿入操作


まず、二分探索木のノードを表すクラスを作成しましょう。ノードには値と、左右の子ノードへの参照が含まれます。

class Node {
    int value;
    Node left;
    Node right;

    public Node(int value) {
        this.value = value;
        this.left = null;
        this.right = null;
    }
}

次に、ノードを挿入するメソッドを実装します。挿入操作では、新しいノードを適切な位置に配置する必要があります。具体的な手順は以下の通りです。

  1. ツリーが空であれば、新しいノードをルートノードとして挿入します。
  2. ツリーが空でなければ、挿入する値と現在のノードの値を比較します。
  3. 挿入する値が現在のノードの値より小さい場合、左の部分木に挿入します。左の子ノードが存在しない場合は、新しいノードを作成して左の子ノードとします。
  4. 挿入する値が現在のノードの値より大きい場合、右の部分木に挿入します。右の子ノードが存在しない場合は、新しいノードを作成して右の子ノードとします。
  5. 挿入する値が現在のノードの値と等しい場合、適切な処理を行います(例えば、重複を許さない場合は無視するか、別の操作を行うなど)。

以下に、上記の手順を反映した挿入メソッドのコード例を示します。

class BinarySearchTree {
    Node root;

    public BinarySearchTree() {
        this.root = null;
    }

    public void insert(int value) {
        if (root == null) {
            root = new Node(value);
            return;
        }

        Node current = root;
        while (true) {
            if (value < current.value) {
                if (current.left == null) {
                    current.left = new Node(value);
                    return;
                }
                current = current.left;
            } else if (value > current.value) {
                if (current.right == null) {
                    current.right = new Node(value);
                    return;
                }
                current = current.right;
            } else {
                // 値が重複する場合の処理
                // ここでは無視していますが、必要に応じて適切な処理を追加してください
                return;
            }
        }
    }
}

以上が、Javaで二分探索木にノードを挿入する方法とコード例です。このコードを使用すると、二分探索木に新しい値を挿入することができます。この基本的な操作を応用することで、二分探索木の構築や検索・削除などの操作も実装することができます。