Префиксное дерево (trie)

Дерево для строк; операции зависят от длины ключа, а не от их числа.

СигнатураO(L) на операцию

Trie (бор, префиксное дерево) хранит строки по символам: общие префиксы делят общий путь. Идеально для автодополнения и проверки префиксов.

Сложность: вставка и поиск — O(L), где L — длина ключа, независимо от числа слов. Память: O(сумма длин всех ключей) — может быть большой из-за узлов на каждый символ.

class Trie:
    def __init__(self):
        self.root = {}

    def insert(self, word):       # O(L)
        node = self.root
        for ch in word:
            node = node.setdefault(ch, {})
        node["$"] = True

    def search(self, word):       # O(L)
        node = self.root
        for ch in word:
            if ch not in node:
                return False
            node = node[ch]
        return "$" in node
← Все записи: Алгоритмы и структуры данных
Поддержать проект