Форум программистов, компьютерный форум CyberForum.ru

Dfs Binary Tree, поиск элемента - C++

Восстановить пароль Регистрация
 
Pein95
3 / 3 / 0
Регистрация: 02.01.2013
Сообщений: 116
12.06.2014, 16:01     Dfs Binary Tree, поиск элемента #1
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Employee* depthFirstSearch(string firstName, Employee* root)
{
 
  if (root) {
    if (root->getFirstName() == firstName) {
      return root;
    }
 
    if (root->left) {
      depthFirstSearch(firstName, root->left);
    } else if (root->right) {
      depthFirstSearch(firstName, root->right);
    }
    
  }
  return NULL;
  
}
почему то иногда функция возвращает NULL, хотя елемент там точно есть.
Помогите исправить.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.06.2014, 16:01     Dfs Binary Tree, поиск элемента
Посмотрите здесь:

C++ Поиск элемента списка
Поиск элемента в queue C++
C++ Поиск элемента
C++ Не работает поиск в глубину (DFS)
C++ Удаление элемента из списка и поиск элемента
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Renji
1534 / 982 / 240
Регистрация: 05.06.2014
Сообщений: 2,956
12.06.2014, 16:10     Dfs Binary Tree, поиск элемента #2
почему то иногда функция возвращает NULL, хотя елемент там точно есть.
Потому что результат depthFirstSearch никуда не сохраняется. Потому что если root->left, то root->right игнорируется.
Pein95
3 / 3 / 0
Регистрация: 02.01.2013
Сообщений: 116
12.06.2014, 16:22  [ТС]     Dfs Binary Tree, поиск элемента #3
а как тогда можно реализировать посик?
Renji
1534 / 982 / 240
Регистрация: 05.06.2014
Сообщений: 2,956
12.06.2014, 16:33     Dfs Binary Tree, поиск элемента #4
а как тогда можно реализировать посик?
Сохраняя результаты вызова depthFirstSearch для левой и правой ветвей, и возвращая тот результат, который не ноль.
Pein95
3 / 3 / 0
Регистрация: 02.01.2013
Сообщений: 116
12.06.2014, 16:38  [ТС]     Dfs Binary Tree, поиск элемента #5
можно поподробней?
просто мне нужно вернуть указатель на тот узел дерева, в котором есть нужная информация.
Renji
1534 / 982 / 240
Регистрация: 05.06.2014
Сообщений: 2,956
12.06.2014, 16:49     Dfs Binary Tree, поиск элемента #6
Сохраняя результаты depthFirstSearch(firstName, root->left); и depthFirstSearch(firstName, root->right); в две локальные переменные и возвращая ту локальную переменную, которая не равна 0. Переменные предварительно инициализировать нулями (да, прямо так и писать =0; ).

Но судя по вашему вопросу - ознакомиться с дисциплинами "использование функции в правой части выражения", "нулевой указатель. Что это такое?" и "мания копирования кода из Гугла. Как с ней бороться?". Потому как у меня есть большие сомнения что код в стартовом посте писали именно вы (если вы сами писали функцию, вопроса "как сохранить результаты depthFirstSearch" возникать не должно).
Yandex
Объявления
12.06.2014, 16:49     Dfs Binary Tree, поиск элемента
Ответ Создать тему
Опции темы

Текущее время: 04:51. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru