samedi 22 janvier 2022

Segmentation fault Binary search Tree

I know there is few questions with a similar title, however I went over them and still couldn't solve my error.

This is the BST implementation:

struct node {
    int val;
    node* left;
    node* right;
};

node* createNewNode(int x)
{
    node* nn = new node;
    nn->val = x;
    nn->left  = nullptr;
    nn->right = nullptr;

    return nn;
}

void bstInsert(node* &root, int x)
{
    if(root == nullptr) {
        root = createNewNode(x);
        return;
    }

    if(x < root->val)
    {
        if(root->left == nullptr) {
            root->left = createNewNode(x);
            return;
        } else {
            bstInsert(root->left, x);
        }
    }

    if( x > root->val )
    {
        if(root->right == nullptr) {
            root->right = createNewNode(x);
            return;
        } else {
            bstInsert(root->right, x);
        }
    }
}

Here is my main:


int main() {
    node *root = nullptr;
    for (int i = 0; i < 100000; i++) {
        bstInsert(root, i);
    }
}

If I try to insert 10000 elements then it works alright. however when I try to insert 100000 elements I get in the debugger:

Signal = SIGSEGV (Segmentation fault)

It happens when the value of I in the loop reaches 32469, what am I missing ?

Aucun commentaire:

Enregistrer un commentaire