Trie przechowuje napisy po prefiksach: każdy węzeł reprezentuje znak. Umożliwia szybkie wyszukiwanie po prefiksie/autouzupełnianie; wyszukiwanie to O(L), gdzie L to długość słowa.
Trie (drzewo prefiksowe) przechowuje klucze znak po znaku. Każdy węzeł reprezentuje prefiks, a znacznik końca słowa oznacza pełny wpis. Złożoność zależy od długości klucza L, a nie bezpośrednio od liczby słów (pomijając narzut pamięci/cache).
Typowe operacje:
type Node = { end: boolean; next: Map<string, Node> }
const root: Node = { end: false, next: new Map() }
function insert(word: string) {
let node = root
for (const ch of word) {
const child = node.next.get(ch) ?? { end: false, next: new Map() }
node.next.set(ch, child)
node = child
}
node.end = true
}
function startsWith(prefix: string): boolean {
let node = root
for (const ch of prefix) {
const child = node.next.get(ch)
if (!child) return false
node = child
}
return true
}