Показаны сообщения с ярлыком BST. Показать все сообщения
Показаны сообщения с ярлыком BST. Показать все сообщения

суббота, 31 марта 2012 г.

C++ : Алгоритмы - Бинарное дерево поиска. Часть IV

Четвертая часть статьи про реализацию Бинарных деревьев на С++.

Реализовывать будем Обходы дерева. 

Обход бинарного дерева предполагает посещение всех элементов дерева, при этом каждая вершина посещается только один раз. Существует три вида таких обходов, каждый из которых мы будем реализовывать рекурсивно.

1) Прямой порядок (англ. preorder)
        Посетить корень, посетить левое поддерево, посетить правое поддерево.

C++ : Алгоритмы - Бинарное дерево поиска. Часть III

Продолжение статьи про бинарные деревья...Уже третья часть...

На повестке дня - 2 вида поиска в бинарном дереве. Точнее, вид один, но видов возращаемых значений 2 - это true/false и pointer, то есть указатель на элемент в дереве.

Использовать будем конечно шаблоны и рекурсию. Ниже листинги этих четырёх (2 основных и две, которые вызываются рекурсивно) функций.

Возращает  булевское значение :
bool FindReturnBool(const TypeOfTree& dataToInsert);
//Вспомагательная функция для поиска елемента(true/false)
bool _FindReturnBool(BinaryTree<TypeOfTree>* element,const TypeOfTree& dataToInsert);     

суббота, 11 февраля 2012 г.

C++ : Алгоритмы - Бинарное дерево поиска. Часть II

Итак, продолжим..

Вторая статья про Бинарные деревья поиска. Будем реализовывать метод для вставки элементов в дерево, то есть, создание самого дерева.

Чуть-чуть за саму вставку. Деревья - это не списки, хотя чуть похожи. Поэтому и вставка будет кардинально отличатся от добавления элемента в простой список.

Добавление первого элемента в дерево простое. При добавлении же второго элемента мы должны посмотреть на значение корня: если же добавляемое значение меньше, чем значение корня, то добавляем вставляемый элемент в левое поддерево(то есть присваиваем левому указателю корня новый обьект структуры). Если же второй вставляемый элемент больше, чем значение корня, то добавляем узел в правое поддерево.