Дерево — связный неориентированный граф, в котором отсутствуют циклы. Эквивалентные определения:
- Граф из $n$ вершин и $n-1$ ребра, который связен.
- Связный граф, между любыми двумя вершинами которого ровно один путь.
Специальное дерево — корневое: одна вершина выделена как корень, остальные образуют ориентированную иерархию (потомки/предки).
Двоичное дерево (binary tree): каждый узел имеет максимум двух потомков (левого и правого).
Где применяются:
- Файловая система — папки и файлы образуют дерево каталогов.
- DOM в браузере — HTML-страница это дерево элементов.
- Двоичные деревья поиска (BST) — быстрый поиск ($O(\log n)$).
- B-деревья — индексы в базах данных, файловые системы (NTFS).
- Хаффман-дерево — алгоритм сжатия.
- Синтаксические деревья — разбор кода компилятором.
- AI / игры — дерево решений, минимакс.