
- •Курсовая работа
- •Реализация прикладной задачи при помощи двунаправленных деревьев
- •Задание на курсовую работу
- •Введение
- •Структура данных дерева и основные операции над деревьями
- •Основные понятия связанные с деревьями
- •Классификация деревьев
- •Двоичные деревья
- •Представление двоичных деревьев
- •Упорядоченное двоичное дерево и его свойства
- •Двоичные деревья поиска
- •Основные операции над деревьями.
- •Реализация базы данных клиентов банка на основе двоичных деревьев
- •Постановка задачи
- •Глобальные и локальные переменные
- •Глобальные переменные
- •Локальные переменные
- •Процедуры и функции
- •Процедуры программы
- •Функции программы
- •Инструкция пользования
- •Заключение
- •Список использованных источников
- •16 В.Д. Далека, а.С. Деревянко, о.Г.Кравец, л.Е. Тимановская Модели и структуры данных. Учебное пособие Харьков:хгпу, 2000. - 241с.
- •Приложение а
- •(Обязательное)
- •Блок-схемы основных операций
- •(Обязательное)
Двоичные деревья поиска
Деревья поиска - частный, но практически, пожалуй, наиболее важный вид двоичных деревьев. Будем считать, что каждая вершина имеет некое ключевое поле, позволяющее упорядочить множество вершин. Двоичное дерево называется деревом поиска или поисковым деревом, если для каждой вершины дерева все ключи в ее левом поддереве меньше ключа этой вершины, а все ключи в ее правом поддереве больше ключа вершины.
Деревья поиска являются одной из наиболее эффективных структур построения упорядоченных данных. Как известно, в упорядоченном массиве очень эффективно реализуется поиск (дихотомия), но очень тяжело выполнить добавление и удаление элементов. Наоборот, в упорядоченном списке легко реализуется добавление и удаление элементов, но не эффективна реализация поиска из-за необходимости последовательного просмотра всех элементов, начиная с первого. Деревья поиска позволяют объединить преимущества массивом и линейных списков: легко реализуется добавление и удаление элементов, а также эффективно выполняется поиск.
Дерево поиска следует использовать для представления упорядоченных данных, когда число их достаточно велико и часто приходится выполнять операции добавления, удаления и поиска.
Обратите внимание на рисунок, приведенный выше. Данное дерево организовано таким образом, что для каждого узла все ключи (значения узлов) его левого поддерева меньше ключа этого узла, а все ключи его правого поддерева больше. Такой способ построения дерева называется деревом поиска или двоичным упорядоченным деревом.
С помощью дерева поиска можно организовать эффективный способ поиска, который значительно эффективнее поиска по списку.
Поиск в упорядоченном дереве выполняется по следующему рекурсивному алгоритму:
Если дерево не пусто, то нужно сравнить искомый ключ с ключом в корне дерева:
если ключи совпадают, поиск завершен;
если ключ в корне больше искомого, выполнить поиск в левом поддереве;
если ключ в корне меньше искомого, выполнить поиск в правом поддереве;
если дерево пусто, то искомый элемент не найден.
Дерево поиска может быть использовано для построения упорядоченной последовательности ключей узлов. Например, если мы используем симметричный порядок обхода такого дерева, то получим упорядоченную по возрастанию последовательность: 1 6 8 10 20 21 25 30.
Можно организовать «зеркально симметричный» обход, начиная с правого поддерева, тогда получим упорядоченную по убыванию последовательность: 30 25 20 10 8 6 1.
Таким образом, деревья поиска можно применять для сортировки значений как на рисунке 3.
Рисунок 5 – Сортировка значений
Если в определении дерева имеет значение порядок поддеревьев T 1 , T 2 , ... T m , то дерево является упорядоченным.
Сыновья узла обычно упорядочиваются слева направо. Поэтому деревья, приведенные на рисунке, являются различными.
Если порядок сыновей игнорируется, то такое дерево называется неупорядоченным. Далее будем неявно предполагать, что все рассматриваемые деревья являются упорядоченными, если явно не указано обратное .