“Множество”, “Словарь” (set и map) • Управление иерархией данных ◦ Хранение структуры каталогов • Синтаксический разбор выражений ◦ Арифметические выражения ◦ Анализ кода Область применения деревьев
детей – удаляем узел и обнуляем ссылку у родительского узла b. Если есть один ребенок – ставим ребенка на место текущей вершины c. Есть оба ребенка i. Если нет левого узла правого поддерева – копируем данные из правого узла в удаляемый и создаем ссылку на правый узел правого ребенка. ii. Иначе 1. Выберем самый левый узел L правого поддерева 2. Копируем данные из этого узла в удаляемый 3. Удалим L Удаление элемента: алгоритм
левого и правого поддеревьев любого узла различаются не более чем на единицу • Показатель сбалансированности узла — высота правого поддерева минус высота левого поддерева • Максимальная высота АВЛ-дерево
Спускаемся по дереву, выбирая левое или правое направление и вставляем значение 2. При возвращении из рекурсии выполняем балансировку для текущего узла АВЛ-дерево: вставка элемента
дерева. 3. Реализовать обходы бинарного дерева в глубину (DFS): a. прямой обход; b. обратный обход; c. центрированный обход. 4. Реализовать обход дерева в ширину (BFS). 5. Алгоритм Прима. 6. Алгоритм Краскала. 7. Реализация АВЛ-дерева. 8. (для присутствовавших на практике) задача про башню и охранников из контеста Яндекса Практические задания (до 03.12.2021)
является ли дерево бинарным и если является, то проверить, является ли оно и двоичным деревом поиска. Вход: в качестве аргумента функции передается указатель на корень дерева. Выход: • -1 – если дерево НЕ двоичное. • 0 – если произвольное двоичное дерево. • 1 – если двоичное дерево поиска. ЛЕГКО
меняет две вершины в дереве с произвольным числом сыновей. Вход: в качестве аргумента функции передаются указатель на корень дерева, и глубины узлов в дереве (у корня глубина = 0, у его детей = 1 и т.д.) и порядковые их номера на уровне залегания (т.е. среди всех узлов глубины). Выход: вывести в консоль изначальную структуру дерева, порядок обхода дерева и поиска узлов и результат перестановки узлов в дереве. СРЕДНЕ
Борувки (по поиску минимального остовного дерева во взвешенном неориентированном связном графе) . Вход: указатель на первый элемент графа. Выход: вывести в консоль структуру полученного дерева. СЛОЖНО