2016-12-02 5 views
-2

Мне нужно реализовать метод строкового поиска в двоичном дереве. Он принимает в качестве входа узел * и снова выводит узел *.двоичное дерево поиск строки C++

Проблема в том, что она не работает должным образом из-за некоторых исключений указателя, это дает мне ошибку.

Если в какой-то момент я не знаю, пожалуйста, дайте мне знать.

Спасибо заранее

-var создать: не удалось создать переменную ошибку объекта

zoo_tree::node* tree_tools::search(zoo_tree::node* from,string animal) { 
if (from != NULL) { 
    if (from->question == animal) { 
     return from; 
    } 
    if (from->question != animal) { 
     search(from->left, animal); 
     search(from->right, animal); 

    } 
} 
return NULL; 

}

Однако код выше работ, в чем разница ?

zoo_tree :: узел * tree_tools :: Поиск (zoo_tree :: узел * из, строки животных) {

if (from == NULL) 
    return NULL; 

if (from->question == animal) 
    return from; 

if (from->question != animal) 
{ 
    search(from->left, animal); 
    search(from->right, animal); 
} 

}

ответ

0

Очевидная ошибка в коде: рекурсивные вызовы на search() Дон» t возвращает экземпляр, если он не является нулевым, потому что рекурсивные вызовы должны рекурсивно возвращаться. Это означает, что, если корень не является искомым узлом, возвращается NULL.

+0

Большое спасибо, я исправил код. –

Смежные вопросы