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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Pein95
3 / 3 / 0
Регистрация: 02.01.2013
Сообщений: 116
#1

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

12.06.2014, 16:01. Просмотров 270. Ответов 5
Метки нет (Все метки)

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++ Поиск элемента в массиве
C++ Поиск элемента
C++ Не работает поиск в глубину (DFS)
Поиск минимального элемента C++
Бинарный поиск, ошибка: "Invalid operands to binary expression" C++
Поиск элемента в массиве C++
Поиск элемента в списке C++
Поиск элемента по set C++
Поиск элемента в list C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Renji
1698 / 1131 / 270
Регистрация: 05.06.2014
Сообщений: 3,284
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
1698 / 1131 / 270
Регистрация: 05.06.2014
Сообщений: 3,284
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
1698 / 1131 / 270
Регистрация: 05.06.2014
Сообщений: 3,284
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:17. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru