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

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

Войти
Регистрация
Восстановить пароль
 
DJFile
0 / 0 / 0
Регистрация: 11.04.2010
Сообщений: 31
#1

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

11.04.2011, 16:23. Просмотров 790. Ответов 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++
Возникла проблема в коде ,не могу разобраться #include &quot;stdafx.h&quot; #include&lt;iostream&gt; #include&lt;stdlib.h&gt; #include&lt;conio.h&gt; using...

Бинарное дерево. Поиск числа ветвей по значению - C++
Задание: Написать программу, к-я находит длину пути (число ветвей) от корня до ближайшего значения x. Если такой вершины нет, то вернуть...

Бинарное дерево поиска: "Библиотека", поиск по автору книги - C++
Есть бинарное дерево поиска.Дерево представляет собой подобие библиотеки.Нужно осуществить поиск по фамилии автора книги.Для ситуации один...

Бинарное дерево - C++
дано целочисленнное бинарное дерево. найти: а)количество вершин дереваж б)значение самой левой вершины в правом поддереве в)...

Бинарное дерево - C++
пытаюсь самостоятельно разобраться с этим, но чето не выходит вот мой листинг. вроде кудато чтото вводит, но ничего не выводит....

Сбалансированное дерево (бинарное) - C++
кто сможет, пожалуйста напишите код с++, построения сбалансированного дерева,функцию добавления элемента в дерево и восстановелния...

Класс бинарное дерево - C++
Здравствуйте. Требуется написать англо-русский словарь на основе бинарного дерева. Не полностью понимаю, как будет выглядеть класс....

STL бинарное дерево - C++
Доброго времени суток!:) Изучаю STL, пока поверхностно прошелся по контейнерам, но не встретил деревьев... хотя set, multiset, map и...

Бинарное дерево поиска - C++
В текстовом файле содержится произвольный текст. Построить на его основе бинарное дерево поиска, каждый узел которого содержит слово....

бинарное дерево?Файл? - C++
объясните пожалуйста что означает слово бинарное?

Простое бинарное дерево - C++
Простое бинарное дерево с int ключом, добавлением, удалением по ключу и выводом на консоль. Можно использовать при начальном изучении и...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru