Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Обходы дерева

Дважды связные списки | Реализация очереди с помощью указателей | Разновидности очередей | Реализация стеков с помощью массивов | Итерационный вычислительный процесс | Рекурсивный вычислительный процесс | Вычисление факториала числа N с помощью рекурсии | Лекция 6 | Построение выражений в обратной польской записи | Преобразование скобочных выражений в обратную польскую запись |


Читайте также:
  1. Б) из дерева
  2. Бинарное дерево. Построение бинарного дерева
  3. Ветви дерева, или изучение ремесел
  4. Висвакарман, творец всего, создавший мир из неизвестного дерева, сделал это следующим образом.
  5. Вопрос 35 Конструктор формы списка иерархического справочника при указании размещения дерева...
  6. ДВА ДЕРЕВА
  7. Женщина в ветвях дерева

 

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

Все три способа обхода дерева можно определить рекурсивно следующим образом.

Если дерево Т является нулевым деревом, то в список обхода заносится пустая запись.

Если дерево Т состоит из одного узла, то в список обхода записывается этот узел.

Далее, пусть Т – дерево с корнем n и поддеревьями , тогда для различных способов обхода имеем следующее:

а) при прохождении в прямом порядке (т.е. при прямом упорядочивании) узлов дерева Т сначала посещается корень n, а затем узлы поддерева далее все узлы поддерева и т. д. Последним посещаются узлы поддерева

б) при симметричном обходе узлов дерева Т сначала посещаются в симметричном порядке все узлы поддерева далее корень n, затем последовательно в симметричном порядке все узлы поддеревьев .

в) в случае обхода в обратном порядке сначала посещаются в обратном порядке все узлы поддерева , затем последовательно посещаются все узлы поддеревьев , также в обратном порядке, последним посещается корень n.

Для дерева, изображенного на рис. 15, рассмотрим наброски рекурсивных процедур, реализующих три способа обхода дерева.

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

Рис. 15 – Дерево обхода

 

Прямой обход дерева:

Procedure СверхуВниз (t: АдрЭлем);

begin

if t <>nil

then begin

P(t); {обработка вершины}

write(t);

СверхуВниз (t^.left);

СверхуВниз (t^. right);

end

end;

Последовательность обработки: 1, 2, 3, 2, 4, 2, 1, 5, 6, 5, 7, 5, 1

 

Симметричный обход дерева:

Procedure СлеваНаправо (t: АдрЭлем);

begin

if t <>nil

then begin

СлеваНаправо (t^.left);

P(t); {обработка вершины}

write(t);

СлеваНаправо (t^. right);

end

end;

 

Последовательность обработки: 1, 2, 3, 2, 4, 2, 1, 5, 6, 5, 7, 5, 1

 

Обратный обход дерева:

Procedure СнизуВверх (t: АдрЭлем);

begin

if t <>nil

then begin

СнизуВверх (t^.left);

СнизуВверх (t^. right);

P(t); {обработка вершины}

write(t);

end

end;

 

Последовательность обработки: 1, 2, 3, 2, 4, 2, 1, 5, 6, 5, 7, 5, 1


Дата добавления: 2015-07-16; просмотров: 113 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Нелинейные структуры. Деревья| Бинарное дерево. Построение бинарного дерева

mybiblioteka.su - 2015-2024 год. (0.011 сек.)