まず、バイナリサーチツリーのノードを表す構造体を定義します。
struct Node {
int data;
Node* left;
Node* right;
};
次に、挿入関数を定義します。
Node* insert(Node* root, int data) {
// ツリーが空の場合、新しいノードを作成して返す
if (root == nullptr) {
Node* newNode = new Node();
newNode->data = data;
newNode->left = nullptr;
newNode->right = nullptr;
return newNode;
}
// ツリーが空でない場合、適切な位置にノードを挿入する
if (data < root->data) {
root->left = insert(root->left, data);
} else if (data > root->data) {
root->right = insert(root->right, data);
}
return root;
}
この関数は、ツリーのルートノードと挿入するデータを受け取ります。ツリーが空の場合は、新しいノードを作成して返します。ツリーが空でない場合は、適切な位置にノードを挿入します。
以下は、上記の挿入関数を使用するサンプルコードです。
#include <iostream>
int main() {
Node* root = nullptr;
// ノードを挿入する
root = insert(root, 10);
root = insert(root, 5);
root = insert(root, 15);
root = insert(root, 7);
root = insert(root, 12);
// ツリーの内容を表示する
std::cout << "ツリーの
内容:
";
display(root);
return 0;
}
このサンプルコードでは、いくつかのノードをツリーに挿入し、最後にツリーの内容を表示しています。
以上が、C++でバイナリサーチツリーにデータを挿入する方法です。必要に応じて、この基本的な実装を拡張することができます。