DEV Community

Sreekar Reddy
Sreekar Reddy

Posted on • Originally published at sreekarreddy.com

🔤 Tries Explained Like You're 5

Trees for storing strings efficiently

Day 134 of 149

👉 Full deep-dive with code examples


The Autocomplete Analogy

When you type on your phone:

  • Type "hel" → Suggestions: "hello", "help", "helicopter"
  • Type "help" → Suggestions: "help", "helpful", "helpless"

The phone quickly finds all words starting with what you typed.

A Trie is the data structure that makes autocomplete super fast!


The Problem It Solves

Searching through all words is slow:

  • Dictionary has 100,000 words
  • Check if "hello" starts with "hel"... for each word?
  • Very slow!

We need a smarter way to find words by their beginning.


How Tries Work

A Trie is a tree where:

  • Each path from root spells a word
  • Shared prefixes share paths
  • Branching happens where words differ
        (root)
        /    \
       c      h
      /        \
     a          e
    / \          \
   r   t          l
   |   |          |
  [car][cat]     l
                 |
                 o
                 |
               [hello]
Enter fullscreen mode Exit fullscreen mode

"car" and "cat" share "ca" path, then split.


Why It's Fast

To find "cat":

  • Start at root
  • Go to 'c' → found
  • Go to 'a' → found
  • Go to 't' → found, it's a word!

Only 3 steps, regardless of dictionary size!


Common Uses

  • Autocomplete → Find all words starting with prefix
  • Spell checking → Is this word in the dictionary?
  • IP routing → Match network prefixes
  • Predictive text → Suggest next words

Trie vs Hash Table

Hash Table Trie
Find exact word Fast Fast
Find by prefix Slow (check all) Fast!
Memory More compact Uses more memory

In One Sentence

A Trie is a tree structure that organizes strings by their characters, making it incredibly fast to find all words that start with a given prefix.


🔗 Enjoying these? Follow for daily ELI5 explanations!

Making complex tech concepts simple, one day at a time.

Top comments (0)