Пред.
След.
Макеты страниц
Распознанный текст, спецсимволы и формулы могут содержать ошибки, поэтому с корректным вариантом рекомендуем ознакомиться на отсканированных изображениях учебника выше Также, советуем воспользоваться поиском по сайту, мы уверены, что вы сможете найти больше информации по нужной Вам тематике ДЛЯ СТУДЕНТОВ И ШКОЛЬНИКОВ ЕСТЬ
ZADANIA.TO
2.2. Представление деревьевКонечное корневое дерево Гформально определяется как непустое конечное множество упорядоченных узлов, таких, что существует один выделенный узел, называемый корнем дерева, а оставшиеся узлы разбиты на Корневое дерево на рис. 2.3 содержит 9 узлов, помеченных буквами от a до
Рис. 2.3. Корневое дерево с тремя поддеревьями Важной разновидность корневых деревьев являются бинарные деревья. Бинарное дерево Глибо пустое, либо состоит из выделенного узла, называемого корнем, и двух бинарных поддеревьев: левого Лесом называют упорядоченное множество деревьев. Тогда дерево можно определить как непустое множество узлов, такое, что существует один выделенный узел, называемый корнем дерева, а оставшиеся узлы образуют лес с поддеревьями корня. 2.2.1. Представление деревьев на связанной памятиПочти все машинные представления деревьев основаны на связанных распределениях. Каждый узел состоит из поля данных и некоторых полей для указателей. В следующем примере представления дерева каждый узел имеет по три поля указателей.
Рис. 2.4. Регулярная связанная структура представления дерева Произвольное дерево с переменным числом поддеревьев всегда можно представить с помощью односторонних списков с использованием двухкомпонентных звеньев, в которых в первом поле находится либо указатель, либо данные, а во втором — всегда указатель.
Рис. 2.5. Универсальная связанная структура представления дерева Применение указателей и связанных списков придает памяти гибкость, необходимую для представления различных структур. Но при этом легко и перестараться; поэтому следует избегать слишком большого количества указателей; сложность программной поддержки таких структур возрастает «экспоненциально», теряется четкость основной структуры, которую пытаются представить в памяти (последний пример представления дерева это наглядно подтверждает). 2.2.2. Представление деревьев на смежной памятиПредставление деревьев на смежной памяти (одномерный массив) предполагает неявное присутствие ребер, переход по которым выполняется посредством арифметических операций над индексами элементов массива — смежной памяти. Формирование таких деревьев с помощью адресной арифметики можно осуществлять двумя способами. Идея первого способа применима при любом постоянном количестве ребер, выходящих из вершин (регулярное дерево). Рассмотрим данный способ формирования на примере двоичного (бинарного) дерева. Пусть имеется одномерный массив смежных элементов По дереву на рис. 2.6 легко перемещаться в обоих направлениях. Переход вниз на один уровень из вершины
Рис. 2.6. Двоичное дерево на смежной памяти с последовательной нумерацией вершин Другой способ, основанный на индексной арифметике, применим только для двоичных деревьев. Пусть для представления дерева используется одномерный массив В качестве примера использования представления регулярных деревьев на смежной памяти рассмотрим решение следующей задачи. Задача. Написать программу поиска всех замкнутых маршрутов длины Пример файла исходных данных: (см. скан) Выходной файл для данного примера:
В алгоритме 2.4 представлена программа расчета всех искомых маршрутов длины Алгоритм 2.4. Программа на Pascalе поиска замкнутых маршрутов по треугольнику (см. скан) (см. скан) При проходе вниз вершины дерева заполняются метками
Рис. 2.7. Двоичное дерево маршрутов по треугольнику на смежной памяти Во второй части алгоритма выполняется формирование искомых маршрутов (процедура RouteTreeAbc), основой для построения которых служит дерево прохода на рис. 2.7. Для формирования всех маршрутов теперь достаточно подняться по нему от листьев с метками а вершины треугольника к корню, запоминая пройденные метки. Ясно, что число маршрутов будет равно числу вершин на последнем уровне (количество листьев) с меткой а.
|
1 |
Оглавление
|