C++でのバイナリサーチツリーへの挿入方法


まず、バイナリサーチツリーのノードを表す構造体を定義します。

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++でバイナリサーチツリーにデータを挿入する方法です。必要に応じて、この基本的な実装を拡張することができます。