Standard tries waste space when long strings share no common prefixes. Consider storing "algorithm" and "zebra". Each needs 9+ nodes with only one child each.
Compressed tries (radix trees) merge chains of single-child nodes: Standard trie for ["test", "testing"]: root → t → e → s → t → [end] ↓ i → n → g → [end] Compressed trie: root → "test" → [end] ↓ "ing" → [end] Edges store strings instead of single characters.
This reduces node count significantly for sparse tries. Implementation is more complex. You need to handle splitting edges when inserting a word that shares a partial prefix. Time: . Space: .