Hardtrie
Что такое Trie (префиксное дерево)?
1Постановка
Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.
2Решение
Trie (prefix tree) — дерево для хранения строк с shared prefixes. Каждый узел — буква, путь от root = слово. Операции O(L), где L = длина слова, не зависят от количества слов.
class TrieNode:
def __init__(self):
self.children = {}
self.is_end = False
class Trie:
def __init__(self):
self.root = TrieNode()
def insert(self, word):
node = self.root
for c in word:
if c not in node.children:
node.children[c] = TrieNode()
node = node.children[c]
node.is_end = True
def search(self, word):
node = self._walk(word)
return node is not None and node.is_end
def startsWith(self, prefix):
return self._walk(prefix) is not None
def _walk(self, s):
node = self.root
for c in s:
if c not in node.children:
return None
node = node.children[c]
return nodeПрименения: autocomplete, spell check, IP routing (longest prefix), dictionary. Space — O(total chars). Вариации: compressed trie (Patricia/Radix tree), suffix tree. Word Search II (LeetCode 212) — Trie + DFS backtracking.
3Как отвечать
- Сначала уточните условия и ограничения, покажите аналитическое мышление.
- Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
- Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡
На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.