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

Презентация:



Advertisements
Похожие презентации
Двоичные деревья поиска. Очередь с приоритетами Федор Царев Спецкурс «Олимпиадное программирование» Лекция , Санкт-Петербург, Гимназия.
Advertisements

Древовидная модель оказывается довольно эффективной для представления динамических данных с целью быстрого поиска информации. Деревья являются одними из.
Деревья1 Структуры и алгоритмы обработки данных, 1 Лекция 5 ДЕРЕВЬЯ 1.Определения дерева, леса, бинарного дерева. Скобочное представление 2.Спецификация.
Задание бинарных деревьев с помощью массивов Обходы деревьев.
ХНУРЭ, кафедра ПО ЭВМ, Тел , Лекции Н.В. Белоус Факультет компьютерных наук Кафедра ПО ЭВМ, ХНУРЭ Компьютерная.
Деревья и их представление в STL Презентацию подготовила Чиркова Ольга, 2 подгруппа, группа 271ПИ.
1 БАЗЫ ДАННЫХ СТРУКТУРЫ ДАННЫХ. 2 МОДЕЛИ СТРУКТУР ДАННЫХ Линейная структура (списки и кольца) Линейная структура (списки и кольца) Иерархическая структура.
Графы Лекция 2. Графы Неориентированным графом (графом) называется тройка (V, E, ), где V и E конечные множества и {X V : | X | = 2}. Ориентированным.
Алгоритмы сканирования и обхода Лекция 3. Алгоритм сканирования графа Input: Орграф (граф) G и вершина s. Output: Множество R вершин, достижимых из s,
Деревья, преобразование выражений Лекция 11. Время, затрачиваемое алгоритмом, как функция от размера задачи, называется временной сложностью. Поведение.
Двусвязность Лекция 14. Связность компонент Граф G называется k-связным (k 1), если не существует набора из k-1 или меньшего числа узлов V` V, такого,
Лекция 9 Отношения, графы Определения. Определение. Пусть а и b объекты. Через (а, b) обозначим упорядоченную пару, состоящую из объектов а и b, взятых.
Деревья Граф Граф состоит из вершин, связанных линиями. Направленная линия (со стрелкой) называется дугой. Линия ненаправленная (без стрелки) называется.
Лекция 9 Б-деревья План лекции 1.Структуры данных на диске 2.Определение Б-дерева. 3.Высота Б-дерева. 4.Поиск в Б-дереве 5.Создание пустого дерева. 6.Разбиение.
V-множество вершин, E- множество ребер Граф - G(V, Е). Л. Эйлер 1736 г. G(V, Е, f) V,E – множества, отображение инциденции f: Е V&V множества Е в V&V Основы.
Домашнее задание «Применение графа» ВСПОМНИМ… Граф Простейшая модель системы.Отображает элементарный состав системы и структуру связей Сеть Граф с возможностью.
ТЕОРИЯ ГРАФОВ ЗАДАЧА КОММИВОЯЖЕРА Гамильтоновы графы применяются для моделирования многих практических задач. Основой всех таких задач служит классиче.
Теория графов Основные определения. Дуга Пусть имеется множество вершин V={V 1,V 2,…,V n } и пусть на нем задано бинарное отношение Г V×V, – V i Г V j.
Деревья ПОИСКА Дерево поиска – это либо пустое дерево, либо непустое двоичное дерево, в котором все элементы различны и в котором для каждой вершины справедливо.
Граф объектный (в программировании) это совокупность узлов и рёбер, соединяющих эти узлы. Объектные графы обеспечивают простой способ учёта взаимных связей.
Транксрипт:

Дерево это связный ациклический граф. Связность означает наличие путей между любой парой вершин, ацикличность отсутствие циклов и то, что между парами вершинами имеется только по одному пути. Ориентированное (направленное) дерево -ориентированный граф, не содержащий циклов)

Дерево не имеет кратных рёбер и петель. Любое дерево с вершинами содержит ребро. Более того, конечный связный граф является деревом тогда и только тогда, когда, где число вершин, число рёбер графа. Граф является деревом тогда и только тогда, когда любые две различные его вершины можно соединить единственным элементарным путём. Любое дерево однозначно определяется расстояниями (длиной наименьшей цепи) между его концевыми (степени 1) вершинами. Для любых трёх вершин дерева, пути между парами этих вершин имеют ровно одну общую вершину.

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

Двоичное дерево поиска это двоичное дерево, для которого выполняются следующие дополнительные условия Свойства дерева поиска : Оба поддерева левое и правое, являются двоичными деревьями поиска. У всех узлов левого поддерева произвольного узла X значения ключей данных меньше, нежели значение ключа данных самого узла X. В то время, как у всех узлов правого поддерева того же узла X значения ключей данных не меньше, нежели значение ключа данных узла X. Для различных операций двоичное дерево поиска можно определить так: Двоичное дерево состоит из узлов (вершин) записей вида (data, left, right), где data некоторые данные привязанные к узлу, left и right ссылки на узлы, являющиеся детьми данного узла - левый и правый сыновья соответственно. Для оптимизации алгоритмов конкретные реализации предполагают также определения поля parent в каждом узле (кроме корневого) - ссылки на родительский элемент. Данные (data) обладают ключом (key), на котором определена операция сравнения "меньше". В конкретных реализациях это может быть пара (key, value) - (ключ и значение), или ссылка на такую пару, или простое определение операции сравнения на необходимой структуре данных или ссылке на неё. Для любого узла X выполняются свойства дерева поиска: key[left[X]] < key[X] key[right[X]], т. е. ключи данных родительского узла больше ключей данных левого сына и нестрого меньше ключей данных правого. Основным преимуществом двоичного дерева поиска перед другими структурами данных является возможная высокая эффективность реализации основанных на нём алгоритмов поиска и сортировки.

Есть три способа обхода: Прямой Поперечный Обратный

Префиксный (прямой) обход сначала обрабатывается текущий узел, затем левое и правое поддеревья; Префиксный обход: A, B, D, H, E, C, F, I, J, G

Инфиксный (симметричный) обход сначала обрабатывается левое поддерево текущего узла, затем корень, затем правое поддерево; инфиксный обход: D, H, B, E, A, I, F, J, C, G

Постфиксный (обратный) обход сначала обрабатываются левое и правое поддеревья текущего узла, затем сам узел. постфиксный обход: H, D, E, B, I, J, F, G, C, A

1. Двоичная куча, пирамида, или сортирующее дерево такое двоичное дерево, для которого выполнены три условия: 2. Значение в любой вершине не меньше, чем значения её потомков. 3. Глубина листьев (расстояние до корня) отличается не более чем на 1 слой. 4. Последний слой заполняется слева направо. 5. Также двоичная куча просто реализуемая структура данных, позволяющая быстро (за логарифмическое время) добавлять элементы и извлекать элемент с максимальным приоритетом (например, максимальный по значению).

class Heap { int[] data; // массив с элементами (индексация с 1, 0 - фиктивная вершина) int pnt = 0; // указаетель на последний элемент /* Конструктор */ Heap(int size) { data = new int [size + 1]; } /* Добавить элемент */ void add(int x) { data[++pnt] = x; for (int v = pnt, p = v >> 1; p > 0 && data[p] > data[v]; swap(data, p, v), v = p, p >>= 1); } /* Извлечь минимум */ int extractMin() { int ret = data[1]; swap(data, 1, pnt--); for (int v = 1; (v