Trie (префиксное дерево)
Слова как пути от корня: общие префиксы хранятся один раз.
1class Trie {2 private root: Node = { char: '·', children: new Map<string, Node>(), end: false }3 4 insert(word: string): void {5 let node = this.root6 for (const ch of word) {7 let next = node.children.get(ch)8 if (next === undefined) {9 next = { char: ch, children: new Map(), end: false }10 node.children.set(ch, next)11 }12 node = next13 }14 node.end = true15 }16 17 has(word: string): boolean {18 let node = this.root19 for (const ch of word) {20 const next = node.children.get(ch)21 if (next === undefined) return false22 node = next23 }24 return node.end25 }26}27 28interface Node {29 char: string30 children: Map<string, Node>31 end: boolean32}Проблема
Слова как пути от корня: общие префиксы хранятся один раз.
Что вы видите
Дерево букв: «cat» и «code» делят узел «c»; конец слова помечен.
Как это работает
Все операции за длину слова. Автодополнение, словари, спелл-чекеры: найти все слова с префиксом — спуститься до него.
Пошаговый разбор
- 01
Вставка
Спуск по буквам, недостающие узлы создаются.
- 02
Общий префикс
Переиспользуется без дублирования.
- 03
Поиск
Тот же спуск + флаг конца слова.
Complexity и ограничения
См. complexity в шапке страницы.
Edge cases
- Пустой вход
Корректно завершается без лишних шагов.
- Вырожденный случай
Минимум работы — сразу ответ.
Где встречается в реальности
Продукт
Классический приём в реальных системах.
Собеседования
Стандартный вопрос на понимание структуры.
Связанные алгоритмы
«Как устроено автодополнение: дерево слов»
Тот же сценарий StepSequence в вертикальной композиции — с safe zones и записью WebM ниже на странице.
Shorts 9:16
Вертикальная композиция строится той же последовательностью шагов, что и страница: safe zones отмечены пунктиром (там живёт UI платформ), биты сценария подсвечиваются по прогрессу. Кнопка записи сохраняет WebM — детерминированная StepSequence даёт воспроизводимый ролик без монтажа.