stack overflow problem in program

Posted by Jay on Stack Overflow See other posts from Stack Overflow or by Jay
Published on 2010-04-03T06:22:28Z Indexed on 2010/04/03 6:33 UTC
Read the original article Hit count: 341

Filed under:

So I am currently getting a strange stack overflow exception when i try to run this program, which reads numbers from a list in a data/text file and inserts it into a binary search tree. The weird thing is that when the program works when I have a list of 4095 numbers in random order. However when i have a list of 4095 numbers in increasing order (so it makes a linear search tree), it throws a stack overflow message. The problem is not the static count variable because even when i removed it, and put t=new BinaryNode(x,1) it still gave a stack overflow exception. I tried debugging it, and it broke at if (t == NULL){ t = new BinaryNode(x,count); Here is the insert function.

BinaryNode *BinarySearchTree::insert(int x, BinaryNode *t) {
    static long count=0;
    count++;

    if (t == NULL){ t = new BinaryNode(x,count);
        count=0;
    }
    else if (x < t->key){
        t->left = insert(x, t->left);

    }
    else if (x > t->key){

        t->right = insert(x, t->right);

    }
    else
        throw DuplicateItem();
    return t;
}

© Stack Overflow or respective owner

Related posts about stackoverflow