2015-10-07 8 views
0

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

слово, воля, wyr, рубчик, увядание, яблоко, абс, Вак (вставляется в таком порядке)

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

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

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

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; 
     } 
    } 
} 

разъяснений, слово я ищу это «ж ***» (в «*», являющиеся групповые символы), так что, если заявление проверяет, если температура указателя имеет подстроку ш, и если звук увеличивает счет, поэтому я могу отправить номер обратно на сколько совпадений с этим подстановочным знаком.

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

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

ответ

0

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