简介
TrieTree又称作字典树或前缀树(下称Trie),是一种专门用于处理字符串的树。
对比其其他树查询字符串的时间复杂度,Trie的时间复杂度十分的低。
- 平均查询时间复杂
- 常规的树结构:O(logn)
- Trie:O(M),M为字符串长度
思路
假设我们的字典可以插入26个字母作为元素组成的字符串,则每个节点都可拥有26个子节点,并把把字符(元素)存储在边上。
上面输入了3个字符串,可以看出若查找ab,只需要2次
- 插入
- 遍历各个字符,判断是否存在,若不存在,则创建
- 删除
而我们可以在Trie的节点上增加某些数据项就可以扩展其功能。
这里我们写2个
- 具体功能
- 查询有多少词使用某前缀
- 在插入时,让每个节点上记录其经过的次数(Path),

- 在插入时,让每个节点上记录其经过的次数(Path),
- 查询某词汇是否存在,并返回插入次数。
- 在插入时,让最后一个字节的节点记录当前插入的次数(End)。
- 在插入时,让最后一个字节的节点记录当前插入的次数(End)。
- 查询有多少词使用某前缀
实现
1 | public static class TrieNode { |