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

Бинарное дерево. Поиск. - C++

Восстановить пароль Регистрация
 
DJFile
0 / 0 / 0
Регистрация: 11.04.2010
Сообщений: 31
11.04.2011, 16:23     Бинарное дерево. Поиск. #1
Здравствуйте. Дано задание, создать бинарное дерево с возможностью добавления, удаления элементов и поиск. Знаю, что тут ничего сложного и в принципе всё сделал. По ходу изучения понял что чтобы красиво выводить дерево мне нужны итераторы, с этим тоже более менее разобрался. Но есть одна загвоздка с поиском. Не знаю как обработать случай, когда искомый элемент не найден.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
template<typename T>
T BinTree<T>::Find(const T& value) const
{
    return *FindHelper(pRoot, value);
}
 
template<typename T>
T* BinTree<T>::FindHelper(Node<T>* pNode, const T& value) const
{
    if (pNode == NULL)  // Пока как бы так
        return NULL;
    if (value == pNode->data)
    {
        return &pNode->data;
    }
 
    if (value < pNode->data)
    {
        return FindHelper(pNode->pLeft, value);
    } 
    else
    {
        return FindHelper(pNode->pRight, value);
    }
}
В голове пока что только один вариант, это делать поиск с помощью итераторов и там уже обрабатывать. Как это делается правильно?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.04.2011, 16:23     Бинарное дерево. Поиск.
Посмотрите здесь:

C++ Бинарное дерево
Бинарное дерево C++
C++ Бинарное дерево. Поиск числа ветвей по значению
бинарное дерево C++
Бинарное дерево. С++ C++
C++ Бинарное дерево, поиск пирамиды
C++ Бинарное дерево
Бинарное дерево C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DexMipt
13 / 13 / 1
Регистрация: 13.03.2011
Сообщений: 98
11.04.2011, 19:34     Бинарное дерево. Поиск. #2
а тебе не хватает в конце условия вылета
C
1
else return NULL;
как то так

вот мои поиск в дереве, рекурсивный )только на си
C
1
2
3
4
5
6
7
8
struct treeNode* TreeSearch (struct treeNode **treePtr , unsigned long long int value)
{
    if      ((*treePtr)->data == value)                                         return &treePtr;
    else if ((*treePtr)->data > value && (*treePtr)->leftPtr  != NULL) TreeSearch(&(*treePtr)->leftPtr , value);
    else if ((*treePtr)->data < value && (*treePtr)->rightPtr != NULL) TreeSearch(&(*treePtr)->rightPtr, value);
 
    else return NULL;
}
Добавлено через 42 секунды
а можешь помочь при удаление узла дерева, тут http://www.cyberforum.ru/cpp-beginne...ead273988.html
Yandex
Объявления
11.04.2011, 19:34     Бинарное дерево. Поиск.
Ответ Создать тему
Опции темы

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