Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Graph-Alg.doc
Скачиваний:
1
Добавлен:
16.09.2019
Размер:
175.62 Кб
Скачать

Алгоритми на графах Обходи орієнтованих дерев

При виконанні алгоритмів, що використовують орієнтовані дерева, часто здійснюється обхід (відвідування) вершин дерева у деякому порядку. Відомі кілька способів організації таких обходів. Розглянемо процедури обходу орієнтованого дерева у прямому порядку та зворотному порядку. Нехай Т – упорядковане орієнтоване дерево; корінь дерева позначимо r.

Процедура обходу упорядкованого орієнтованого дерева у прямому порядку:

1) відвідати корінь r;

2) якщо v1,…,vk – дочірні вершини r, то застосувати процедуру обходу упорядкованого орієнтованого дерева у прямому порядку до піддерев з коренями v1,…,vk у зазначеному порядку.

Процедура обходу упорядкованого орієнтованого дерева у зворотному порядку:

1) якщо v1,…,vk – дочірні вершини r, то застосувати процедуру обходу упорядкованого орієнтованого дерева у зворотному порядку до піддерев з коренями v1,…,vk у зазначеному порядку;

2) відвідати r.

Розглянемо приклад. Нехай задано орієнтоване упорядковане дерево Т=({v1,v2,v3,v4,v5,v6,v7},{(v1,v2),(v1,v3),(v1,v4),(v3,v5),(v5,v6),(v5,v7)}). Будемо вважа-ти, що сини кожної вершини упорядковані згідно зі своїми номерами (наприклад, сини вершини v1 упорядковані таким чином: v2,v3,v4). Застосуємо до Т процедури обходу у прямому та зворотному порядку. Щоб відобразити порядок, у якому обходяться вершини дерева Т, будемо нумерувати верши-ну, коли вона відвідується. Нумерацію здійснюватимемо за допомогою цілих додатних чисел. Результати обходу Т у прямому та зворотному порядку зображено на рис.1,а,б.

Для обходу бінарного дерева визначимо процедуру обходу у внутрішньому порядку. Кожна вершина бінарного дерева, яка не є листком, має одного або двох синів. Нехай маємо упорядковане бінарне дерево. При-пишемо кожній його вершині, що є сином якоїсь вершини, одну з ознак: лівий (син) чи правий (син). Зазначимо, що коли вершина має лише одного сина, то він може мати будь-яку з цих ознак.

а)

б)

Рис. 1

Процедура обходу упорядкованого бінарного дерева у внутрішньому порядку:

1) якщо корінь дерева r має лівого сина vl, то застосувати процедуру обходу упорядкованого бінарного дерева у внутрішньому порядку до піддерева, що визначається вершиною vl;

2) Відвідати корінь r;

3) якщо корінь дерева r має правого сина vr, то застосувати процедуру обходу упорядкованого бінарного дерева у внутрішньому порядку до піддерева, що визначається вершиною vr.

Розглянемо приклад. Нехай задано бінарне дерево Т=({a,b,c,d,e,f},{(a,b), (a,c),(b,d),(c,e),(e,f)}). Припишемо кожній вершині-сину ознаку лівий або правий: b – лівий син вершини a, c – правий син вершини a, d – правий син вершини b, e – правий син вершини c, f – лівий син вершини e. Діаграма бінарного дерева Т зображена на рис.2,а. Ознаки лівий-правий визначаються нахилом дуг. На рис.2,б,в,г зображено результати обходу Т у прямому, зворотному та внутрішньому порядку.

а)

б)

в)

г)

Рис. 2

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]