Javaでの二分探索木(Binary Search Tree)へのノードの挿入方法


まず、二分探索木のノードを表すクラスを作成します。ノードは、値を格納する変数と左右の子ノードへの参照を持つ必要があります。以下に、Nodeクラスの例を示します。

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

次に、二分探索木クラスを作成し、ノードの挿入メソッドを実装します。挿入メソッドは、新しいノードを適切な位置に挿入する役割を持ちます。以下に、BinarySearchTreeクラスの例を示します。

class BinarySearchTree {
    Node root;
    public BinarySearchTree() {
        this.root = null;
    }
    public void insert(int value) {
        this.root = insertNode(this.root, value);
    }
    private Node insertNode(Node root, int value) {
        if (root == null) {
            return new Node(value);
        }
        if (value < root.value) {
            root.left = insertNode(root.left, value);
        } else if (value > root.value) {
            root.right = insertNode(root.right, value);
        }
        return root;
    }
}

上記の例では、ノードの挿入メソッドは再帰的に呼び出されます。挿入する値が現在のノードの値よりも小さい場合は、左のサブツリーに挿入されます。挿入する値が現在のノードの値よりも大きい場合は、右のサブツリーに挿入されます。挿入操作は、適切な位置が見つかるまで再帰的に行われます。

以下に、ノードの挿入例を示します。

BinarySearchTree bst = new BinarySearchTree();
bst.insert(5);
bst.insert(3);
bst.insert(7);
bst.insert(1);
bst.insert(4);
bst.insert(6);
bst.insert(8);

上記の例では、値5を持つノードがルートに挿入され、それに続いて3、7、1、4、6、8の値を持つノードが挿入されます。

このようにして、Javaで二分探索木にノードを挿入する方法を実装することができます。