Бинарное дерево поиска (BST) — это структура данных, где:
- Все узлы в левом поддереве текущего узла имеют значения меньше, чем значение текущего узла.
- Все узлы в правом поддереве текущего узла имеют значения больше, чем значение текущего узла.
- Поддерживает быстрые операции поиска, вставки и удаления.
- Средняя сложность: ( O(\log n) ).
- Худшая сложность (несбалансированное дерево): ( O(n) ).
Удаление узла в бинарном дереве поиска включает три варианта:
-
Удаление узла без потомков (лист):
- Узел удаляется, разрывается связь с родительским узлом.
-
Удаление узла с одним потомком:
- Удаляемый узел заменяется своим потомком.
-
Удаление узла с двумя потомками:
- Находится минимальный элемент в правом поддереве (преемник).
- Значение преемника копируется в удаляемый узел.
- Преемник удаляется.
Обход дерева — это процесс посещения всех узлов дерева в определённом порядке.
-
Обход в глубину (DFS):
- Прямой (Pre-order): сначала обрабатывается корень, затем левое и правое поддеревья.
- Симметричный (In-order): сначала левое поддерево, затем корень, затем правое поддерево.
- Обратный (Post-order): сначала левое и правое поддеревья, затем корень.
-
Обход в ширину (BFS):
- Узлы обрабатываются уровнями, начиная с корня.
-
Прямой обход (Pre-order):
- Используется для копирования структуры дерева или создания префиксной записи выражений.
-
Симметричный обход (In-order):
- Применяется для извлечения значений из BST в отсортированном порядке.
-
Обратный обход (Post-order):
- Удобен для удаления дерева или анализа выражений, представленных в дереве.
-
Обход в ширину (BFS):
- Используется для поиска узлов на определённом уровне или проверки свойств уровня дерева.