Закрепление материала: Деревья

Модуль "Деревья" • урок 10 из 11 • ~5 минут

Суть урока. В этом модуле мы изучили деревья - фундаментальную нелинейную структуру данных для работы с иерархиями. Мы рассмотрели математическую базу, логическое представление в виде двоичных узлов, алгоритмы рекурсивных обходов, методы оптимизации памяти (прошивка) и способы приведения любых лесов к строгому бинарному виду.
Карта модуля о деревьях: от определения дерева до деревьев общего вида и правила LCRS
Шесть тем модуля в том порядке, в котором они разбирались

Краткое резюме модуля

За прошедшие уроки мы разобрали главные аспекты работы с деревьями:

Ключевые идеи

Коротко: главное

  • Дерево - это связный граф без циклов с выделенным корнем.
  • В двоичном дереве каждый узел имеет строго не более двух детей.
  • Традиционный обход дерева в глубину требует O(H) дополнительной памяти для стека вызовов, где H - высота дерева.
  • Прошивка позволяет выполнять обходы за O(1) дополнительной памяти.
  • Любой лес деревьев общего вида можно однозначно отобразить в одно двоичное дерево.

Проверьте себя

Вопрос 1

В чем принципиальное отличие дерева от линейного списка?

Вопрос 2

Что содержит каждый узел двоичного дерева в классическом логическом представлении?

Вопрос 3

Какую основную проблему решает прошивка двоичного дерева?

Вопрос 4

Какое правило используется для представления дерева общего вида в виде двоичного?

Вопрос 5

Какие существуют основные порядки обхода двоичного дерева?

Вопрос 6

В чем разница между функциональной спецификацией и логическим описанием дерева?

Как вам урок? Спасибо за отзыв!