まず、二分探索木のノードを表すクラスを作成しましょう。ノードには値と、左右の子ノードへの参照が含まれます。
class Node {
int value;
Node left;
Node right;
public Node(int value) {
this.value = value;
this.left = null;
this.right = null;
}
}
次に、ノードを挿入するメソッドを実装します。挿入操作では、新しいノードを適切な位置に配置する必要があります。具体的な手順は以下の通りです。
- ツリーが空であれば、新しいノードをルートノードとして挿入します。
- ツリーが空でなければ、挿入する値と現在のノードの値を比較します。
- 挿入する値が現在のノードの値より小さい場合、左の部分木に挿入します。左の子ノードが存在しない場合は、新しいノードを作成して左の子ノードとします。
- 挿入する値が現在のノードの値より大きい場合、右の部分木に挿入します。右の子ノードが存在しない場合は、新しいノードを作成して右の子ノードとします。
- 挿入する値が現在のノードの値と等しい場合、適切な処理を行います(例えば、重複を許さない場合は無視するか、別の操作を行うなど)。
以下に、上記の手順を反映した挿入メソッドのコード例を示します。
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で二分探索木にノードを挿入する方法とコード例です。このコードを使用すると、二分探索木に新しい値を挿入することができます。この基本的な操作を応用することで、二分探索木の構築や検索・削除などの操作も実装することができます。