вершиной. Обычно, предполагается, что дерево имеет корень. Дерево без выделенного корня называется свободным. Рис. 5 Пример корневого ориентированного дерева Рис. 6 Пример корневого дерева, полученного из дерева на Рис.3
система; • социальная иерархия в обществе / структурах / компаниях / армии и т.д.; • математические формулы; • структура / разметка HTML страниц сайтов (HTML DOM); • деревья решений, например в играх; • разметка текстов; • и т.д. Свойства деревьев: • степень вершины — количество инцидентных ей ребер; • концевой узел (лист, терминальная вершина) — узел со степенью 1; • узел ветвления — неконцевой узел; • центроид — вершина, при удалении которой размеры получившихся компонент связности не превышают половины размера исходного дерева; • Уровень узла n - это число ветвей в пути от корня до n (по определению, уровень корня – нулевой). • дерево не имеет кратных рёбер и петель; • любое дерево с n вершинами содержит n-1 ребро; • граф является деревом тогда и только тогда, когда любые две различные его вершины можно соединить единственной простой цепью; • любое дерево является двудольным графом; • для любых трёх вершин дерева, пути между парами этих вершин имеют ровно одну общую вершину.
с помеченными вершинами Рис. 10 Организация структуры дерева при помощи описания класса и указателей Рис. 11 Реализация узла такого дерева через шаблонный класс
Дерево с помеченными вершинами Рис. 16 Варианты реализации поиска в глубину: красный – прямой поиск; зеленый – центрированный; синий – обратный. Для дерева на Рис.17 • Прямой поиск: 0-1-3-2-6-9-7-4-8-5 • Центрированный поиск: 2-9-6-3-7-1-8-4-5-0 • Обратный поиск: 2-9-6-7-3-8-5-4-1-0
Дерево с помеченными вершинами Рис. 18 Алгоритм поиска в ширину на примере. Итеративно посещаем всех братьев i-го уровня. Для дерева на Рис.19 поиск в ширину: 0-1-3-4-2-6-7-8-5-9
рёбрах) кратчайшего пути в дереве между любыми двумя вершинами. ൯ 𝑑 = max 𝑢,𝑣∈𝑉 𝑑𝑖𝑠𝑡(𝑢, 𝑣 Эксцентриситет вершины e(v) Радиус (r(T))— наименьший из эксцентриситетов вершин дерева. Центральная вершина — вершина дерева, такая что e(v)=r(T). Центр дерева — множество всех центральных вершин дерева. ቁ = max 𝑢∈𝑉 𝑑𝑖𝑠𝑡(𝑢, 𝑣
обходом в глубину и пометим степень каждого узла. 2. Обрежем (пометим (0)) вершины помеченные (1). 3. Переход к пункту 1) и будем повторять, пока на текущей глубине не окажется не более двух листьев, и при этом в дереве будет тоже не более двух листьев. Оставшиеся листья являются центром дерева. Алгоритм №2 1. Находим диаметральный путь дерева. 2. Множество узлов лежащих в центре этого пути – центр дерева.
типа дерево, которая удовлетворяет свойству кучи: если B является узлом-потомком узла A, то ключ(A) ≥ ключ(B). • Наибольший элемент – корень кучи (max- кучи, существуют min-кучи). • Обычно реализуются в виде массивов. Основные операции над кучей: • найти максимум (минимум) соответственно; • удалить корень, т.е. максимум или удалить минимум соответственно; • обновить ключ элемента кучи; • добавление нового ключа в кучу; • слияние двух куч с целью создания новой кучи. Применение: • Пирамидальная сортировка. • Алгоритмы поиска: при использовании кучи поиск минимума, максимума, медианы или k-го наибольшего элемента может быть сделан за линейное время. • Алгоритмы на графах: применение кучи в качестве структуры данных для внутреннего обхода даёт сокращение времени выполнения на полиномиальный порядок.