Back to Data Structures

Tries

Prefix trees for efficient string operations

What Makes Tries Special

A Trie (pronounced "try") is a tree where each node represents a character. Words share common prefixes, making prefix operations incredibly efficient. Perfect for autocomplete, spell checkers, and IP routing tables.

Key Benefits

  • • O(m) search where m = word length
  • • Prefix matching in O(p + k) time
  • • Space-efficient for shared prefixes
  • • Alphabetical ordering for free

Use Cases

  • • Autocomplete / typeahead
  • • Spell checking
  • • IP routing (longest prefix match)
  • • Word games (Scrabble, Boggle)

Autocomplete Demo

Add New Word

Words in Trie (12)

appappleapplicationapplybananabandbandanacarcardcarecarefulcat

Trie Structure

(root)
└a
└p
└p*
└l
└e*
└i
└c
└a
└t
└i
└o
└n*
└y*
└b
└a
└n
└a
└n
└a*
└d*
└a
└n
└a*
└c
└a
└t*
└r*
└d*
└e*
└f
└u
└l*
*End of word
Current search path

Complexity Analysis

OperationTrieHash SetNotes
Insert wordO(m)O(m)m = word length
Search wordO(m)O(m)Same for exact match
Prefix searchO(m + k)O(n)Trie wins! m = prefix, k = matches
SpaceO(n×m)O(n×m)Trie shares prefixes, often less in practice

Tries excel at prefix-based operations. For pure exact-match lookup, hash tables are simpler and equally fast.