Так что в настоящее время я получаю странное исключение переполнения стека, когда я пытаюсь запустить эту программу, которая читает числа из списка в текстовом файле и вставляет их в двоичное дерево поиска. Странная вещь в том, что когда программа работает, когда у меня есть список из 4095 номеров в случайном порядке. Однако, когда у меня есть список из 4095 номеров в возрастающем порядке (таким образом, он создает линейное дерево поиска), он выдает сообщение о переполнении стека. Проблема не в статической переменной count, потому что даже когда я удалил ее и установил t = new BinaryNode (x, 1), он все равно дал исключение переполнения стека. Я попытался отладить его, и он сломался на if (t == NULL){ t = new BinaryNode(x,count);
Вот функция вставки.
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;
}