Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции СД.doc
Скачиваний:
212
Добавлен:
19.03.2015
Размер:
1.81 Mб
Скачать
      1. 7.3.2. Прохождение бинарных деревьев

В алгоритмах обработки деревьев используется операция прохождения дерева. Под прохождением дерева понимают определенный порядок обхода всех вершин дерева. Различают несколько методов прохождения. Прямой порядок прохождения бинарного дерева можно определить следующим образом (рис. 7.12):

  • попасть в корень;

  • пройти в прямом порядке левое поддерево;

  • пройти в прямом порядке правое поддерево.

a b c d e f g h i

Рис. 7.12. Прямой порядок прохождения бинарного дерева.

Прохождение бинарного дерева в обратном порядке можно определить аналогично (рис. 7.13):

  • пройти в обратном порядке левое поддерево;

  • пройти в обратном порядке правое поддерево;

  • попасть в корень.

Определим еще один порядок прохождения бинарного дерева, называемый симметричным:

  • пройти в симметричном порядке левое поддерево;

  • попасть в корень;

  • пройти в симметричном порядке правое поддерево.

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

Рис. 7.13. Обратный порядок прохождения бинарного дерева.

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

c b d a f e h g i

а).

б).

Рис. 7.14. Представление симметрично прошитого бинарного дерева (а) в виде массивов (б).

    1. 7.4. Алгоритмы на деревьях

      1. 7.4.1. Сортировка с прохождением бинарного дерева

В качестве примера использования прохождения бинарного дерева приведем один из способов сортировки. Допустим, имеется некоторый массив и требуется упорядочить его элементы по возрастанию. Сортировка при этом распадается на две фазы: построение дерева и прохождение дерева.

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

Рис. 7.15. Сортировка по возрастанию с прохождением бинарного дерева.