Saltar al contenido principal
Data structures, algorithms, and the core CS foundations — plus an optional advanced track for expert topics.

Core Computer Science

Data structures, algorithms, and the core CS foundations — plus an optional advanced track for expert topics.

Trie Visualizer

Insert Words

Paso 0 / 0
Speed 100ms
Step Progress 0 / 0
Nodes 0
Words Stored 0
Status Ready
Node (character)
Active
Found
End of word
Step Explanation

Each node stores one character; words are paths from the root that share prefixes.

Pseudocode
 

Trie (Prefix Tree)

Intermediate (3/5) ~45 minutos Tree donde cada nodo representa un carácter Common prefix compartido O(L) search/insert/delete donde L = longitud de palabra Optional: end-of-word marker Prereqs: Trees básicos, Hash Tables

Trie (también llamado prefix tree o digital tree) es una estructura de árbol donde cada nodo representa un carácter de una palabra. Las palabras se almacenan como caminos desde la raíz, compartiendo prefijos comunes.

Es ideal para búsqueda de palabras, autocompletado, y spell checkers.

Estructura

Cada nodo tiene:

  • Un array/mapa de children (uno por carácter del alfabeto).
  • Un flag is_end que indica si este nodo termina una palabra.

Camino: raíz → c → a → r → is_end = true = palabra “car”.

Operaciones

OperaciónComplejidadDescripción
InsertO(L)Recorre/crea nodos por cada carácter
SearchO(L)Recorre nodos; verifica is_end
StartsWithO(L)Recorre nodos; no necesita is_end
DeleteO(L)Borra nodos si no tienen más referencias

Donde L = longitud de la palabra.

Ejemplo

Insertar car, cat, dog, doge:

      (root)
     /      \\
    c        d
   / \\       |\\
  a   a      o o
 /     \\     |  |
r       t   g   e
*       *   *   *

(* = is_end)

Para startsWith("ca"): recorre c → a; si existe, todas las palabras bajo ese nodo tienen el prefijo.

Espacio

Worst-case: cada nodo tiene hasta ALPHABET_SIZE hijos. Para N palabras de longitud promedio L, espacio ≈ O(ALPHABET × N × L).

Optimización: usa Map<char, Node> en lugar de array fijo para alfabetos grandes o Unicode.

Comparación

EstructuraSearchInsertPrefix searchEspacio
Hash TableO(L)O(L)NoO(N × L)
BSTO(L log N)O(L log N)NoO(N × L)
TrieO(L)O(L)SíO(ALPHABET × N × L)

Aplicaciones

  • Autocompletado — Google Search, IDEs
  • Spell checkers — diccionario de palabras válidas
  • IP routing — longest prefix match (radix tree variant)
  • Compression — Patricia trie, radix tree
  • Games — word games (Scrabble, Boggle)
  • Enseñanza — introduce árboles y espacios de caracteres

Casos Extremos

  • Alfabeto grande — Unicode tiene ~140k caracteres; usa map dinámico.
  • Palabras muy largas — L puede ser grande, pero O(L) sigue siendo rápido.
  • Muchas palabras con mismo prefijo — trie comparte nodos, ahorra espacio.
  • Delete — solo borra nodos si no son usados por otras palabras.

Trayectoria de Práctica

  1. Implementa trie con array fijo (a-z); inserta y busca palabras.
  2. Añade startsWith para autocompletado.
  3. Extiende a delete: borra nodos innecesarios.
  4. Investiga radix tree: ¿cómo comprime cadenas de un solo hijo?
  5. Investiga suffix trie: ¿por qué es útil para pattern matching?