字典(Trie)树
概念
字典树也称前缀树,用边来代表字母,而从根结点到树上某一结点的路径就代表了一个字符串,是一种高效地存储和查找字符串集合的数据结构。
代码模版
数据结构
1 | type Trie struct { |
插入
1 | func (t *Trie) Insert(word string) { |
查找前缀
1 | func (t *Trie) SearchPrefix(prefix string) *Trie { |
精确准找
1 | func (t *Trie) Search(word string) bool { |
习题
LeetCode 208 实现前缀树
AcWing 835 Trie字符串统计
扩展
压缩字典(Radix)树
Radix树将只有一个子节点的中间节点将被压缩,使之具有更加合理的内存使用和查询的效率,同时可以在节点中增加权值字段,拥有的子串越多,就越靠近树的左侧(for遍历时更早匹配到)。
在Gin框架中动态路由的实现运用了此数据结构。
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.