前缀树 Trie:补全、路由与词频
按字符分层的树,让「公共前缀」变成共享路径——补全与字典类问题很吃这套。
Trie 每个节点代表一个字符(或一段),从根到某节点的路径即前缀。插入与查询与键长相关,通常 O(L)。
节点形态
type Node struct {
next [26]*Node // 或 map[rune]*Node
end bool
// freq int // 可选:词频 / 热度
}
能做什么
- 自动补全:走到前缀节点后 DFS/BFS 收集词。
- 敏感词 / 字典匹配的基础形态。
- 某些路由树、IP 前缀场景的教学模型。
代价
节点多时内存开销明显;字母表大时用 map;压缩路径可用 Radix Tree。工程前先估基数。
小结
键空间有大量共享前缀时,Trie 自然。先实现正确的插入与前缀遍历,再加压缩与缓存。