- •Содержание
- •Введение
- •Структуры данных Классификация структур данных
- •Операции над данными
- •Понятие алгоритма
- •Массивы Описание массива
- •Представление массивов в памяти
- •Рис 1. Представление вектора в памяти
- •Рис 2. Представление вектора ml в памяти
- •Алгоритмы поиска
- •Алгоритмы сортировки
- •Пример сортировки простыми вставками.
- •Описание записи
- •Операции над записями
- •Записи с вариантами
- •Представление записи в памяти
- •Общие процедуры и функции для работы с файлами
- •Процедуры и функции для работы с типизированными файлами.
- •Сортировка содержимого файлов (Внешняя сортировка)
- •Пример внешней сортировки прямым слиянием
- •Пример внешней сортировки естественным слиянием
- •Динамическая память и данные с динамической структурой
- •Ссылочный тип в языке Pascal
- •Типизированные указатели
- •Нетипизированные указатели
- •Операции над переменными ссылочного типа.
- •Динамические списки
- •Реализация списков на языке Pascal.
- •Стек, очередь, дек
- •Рекурсия
- •Нелинейные структуры данных. Деревья
- •Бинарные деревья
- •Реализация бинарных деревьев
- •Способы обхода бинарных деревьев
- •Сортировка с прохождением бинарного дерева
Способы обхода бинарных деревьев
Обход дерева - процесс посещения всех его вершин в определенном порядке. Существует несколько способов обхода (прохождения) всех узлов дерева. Три наиболее часто используемые способа обхода:
обход в прямом порядке,
обход в обратном порядке,
обход во внутреннем порядке (симметричный обход).
Прямой порядок прохождения бинарного дерева («сверху-вниз», «в глубину»):
1. попасть в корень,
2. пройти в прямом порядке левое поддерево,
3. пройти в прямом порядке правое поддерево.
Прохождение бинарного дерева в обратном порядке («снизу-вверх»):
1. пройти в обратном порядке левое поддерево
2. пройти в обратном порядке правое поддерево
3. попасть в корень.
Симметричный обход («слева-направо»):
1. пройти в симметричном порядке левое поддерево,
2. попасть в корень,
3. пройти в симметричном порядке правое поддерево.
Сортировка с прохождением бинарного дерева
В качестве примера использования прохождения бинарного дерева можно привести один из способов сортировки. Допустим, мы имеем некоторый массив и пытаемся упорядочить его элементы по возрастанию. Сама сортировка при этом распадается на две фазы
1. построение дерева;
2. прохождение дерева в симметричном порядке.
Дерево строится по следующим принципам. В качестве корня создается узел, в который записывается первый элемент массива. Для каждого очередного элемента создается новый лист. Если элемент меньше значения в текущем узле, то для него выбирается левое поддерево, если больше или равен — правое.
Для создания очередного узла происходят сравнения элемента со значениями существующих узлов, начиная с корня.
Во время второй фазы происходит прохождение дерева в симметричном порядке. Результатом сортировки является последовательность значений элементов, извлекаемых их пройденных узлов.
Для того чтобы сделать сортировку по убыванию, необходимо изменить только условия выбора поддерева при создании нового узла во время построения дерева.