Двоичное дерево поиска — обход в порядке

Я пытаюсь создать программу кроссвордов с использованием BST, в настоящее время в дерево вставлены следующие слова:

word, will, wyr, wale, wilt, apple, abs, wack (вставлено в указанном порядке)

но каждый раз, когда я отлаживаю программу в visual studio, я получаю сообщение об ошибке

Exception thrown at 0x008DE28C in AVLBSTcrosswordhunter.exe: 0xC0000005: Access violation writing location 0x0000001C.

Однако при трассировке переменных моя переменная никогда не устанавливается на 1, поэтому я не выхожу из этого цикла while, ошибка происходит внутри, я просто не уверен, где и почему.

while (!traversed)
{
if (temp != NULL)
{
if (temp->word.substr(0, sub_num) == value.substr(0, sub_num))
{
count++;
}
s.push(temp);
temp = temp->left;
}
else
{
if (!s.empty())
{
temp = s.top();
s.pop();
temp = temp->right;
}
if (s.empty())
{
traversed = 1;
}
}
}

для пояснения, слово, которое я ищу, это «w ***» (‘*’ — подстановочные знаки), поэтому оператор if проверяет, содержит ли указатель temp подстроку w, и если звук, то он увеличивает количество, так что я может отправить число обратно на количество совпадений с этим подстановочным поиском.

Кроме того, temp устанавливается на корень (слово) перед циклом while.

Спасибо за любую помощь, которую вы можете предоставить!

0

Решение

Кажется, я создал две пройденные переменные И две переменные стека, пытаясь это сделать, похоже, теперь это работает!

0

Другие решения

Других решений пока нет …