| Что такое сеть? |
О деревьях
Представление с помощью списка ребер и кода Прюфера
Дерево при этом способе задается перечислением пар
или
троек
, если дополнительно нужна нумерация
ребер. Характер связей в списке определяется исходя из условий задачи.
Для дерева, изображенного на (рис.11.1), имеем:
.
Алгоритм построения кода Прюфера
Пусть
— дерево с множеством вершин
.
Будем считать, что номер вершины
равен
.
Сопоставим дереву
последовательность
по следующему
правилу, представленному в виде функции: Функция кода Прюфера (
: дерево) 
- Пусть
обозначает число вершин в
,
а
— целочисленный вектор
длины
; -
; - Для
от
до
цикл -
; -
— номер вершины, с которой смежна вершина с
номером
; -
; - удалить из
вершины с номером
; - возврат
.
Пример. Для дерева
. код Прюфера имеет вид
.
В случае корневого ордерева процедура получения кода Прюфера аналогична.
Необходимо только на последнем месте указывать корневую вершину и при
распаковке кода исключать номер этой вершины из множества
.
Алгоритм раскодирования
Распаковка кода Прюфера осуществляется следующей функцией:
Функция
распаковки (
: код) 
- Пусть
состоит из вершин
, таких, что номер
вершины
равен
, где
—
длина кода
плюс 2; -
; - Для
от
до
цикл; -
для любого
; - В
добавить ребро, соединяющее вершины с номерами
и
; -
; - возврат
.
Уровневые коды корневых деревьев
Пусть
обозначает корневое дерево с лежащим в его основе
свободным деревом
и корнем
. Уровень
вершины
в
— это
расстояние от
до
плюс единица. Уровневый код
(обозначение
) — это последовательность
целых чисел, полученная выписыванием уровней вершин дерева
в постфиксном порядке.
Уровневый
код называется каноническим
(обозначается
), если он является наибольшим в
лексикографическом упорядочении среди всех уровневых кодов, описывающих
дерево.
Пример. Для дерева
, изображенного на (рис.11. 1), имеем
— обычный уровневый код, а
канонический уровневый код
.

