Zestawy rozmówBlog

Twoja wymarzona praca? Lets Git IT.
Interaktywna platforma przygotowująca do rozmów technicznych dla nowoczesnych programistów.

XGitHub

Platforma

  • Kategorie

Zasoby

  • Blog
  • O aplikacji
  • FAQ
  • Sugestie

Prawne

  • Polityka prywatności
  • Regulamin

© 2026 LetsGit.IT. Wszelkie prawa zastrzeżone.

LetsGit.IT/Kategorie/Struktury danych
Struktury danychmedium

Czym jest Trie (drzewo prefiksowe) i typowe zastosowanie?

Tagi
#trie#prefix#autocomplete
Wróć do kategoriiPrzejdź do quizu

Odpowiedź

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.

Odpowiedź zaawansowana

Głębiej

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:

  • insert(word): O(L)
  • search(word): O(L)
  • startsWith(prefix): O(L)

Zastosowania

  • Autouzupełnianie / wyszukiwanie po prefiksie.
  • Słowniki + sprawdzanie pisowni.
  • Prefiksy routingu/IP (często jako trie skompresowane).

Przykłady

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
}

Trade-offy

  • Trie potrafi być pamięciożerne (dużo węzłów). Warianty typu radix tree/compact trie zmniejszają narzut.
  • Rozmiar alfabetu ma znaczenie: tablice są szybkie dla małego alfabetu, a mapy oszczędzają pamięć przy rzadkich węzłach.

Typowe pułapki

Powiązane pytania

Struktury danych
Co to jest trie i dlaczego dobrze nadaje się do wyszukiwania po prefiksie/autouzupełniania?
#trie#prefix#autocomplete
Struktury danych
Co to jest radix tree (Patricia trie) i kiedy jest lepsze od zwykłego trie?
#radix-tree#patricia#trie
Ignorowanie normalizacji Unicode / wielkości liter (prefiksy mogą nie pasować tak, jak oczekuje użytkownik).
  • Rekurencja dla bardzo długich napisów (często lepiej iteracyjnie).