Trie树
标签(空格分隔): 数据结构 算法知识文档 Trie树
应用:
- trie树常用于搜索提示。如当输入一个网址,可以自动搜索出可能的选择。当没有完全匹配的搜索结果,可以返回前缀最相似的可能。
- 给你一个字典,构建一个字典的Trie树,然后每次询问给出字符串s,查询字典中以s作为前缀的单词个数.
- 插入一个字符串,就是建树的过程,查询一个字符串是否存在.
解决应用二:
Trie树的建立:
比如我们给了三个单词app, apple, add,我们按照以下规则创建了一颗Trie树.对于从树的根结点走到黑色结点的路径上的字母依次组合起来就是一个完整的单词.
当我们需要加入一个新的单词appart的时候,根据上面的规则,我们建立了下面的树.
如何使用Trie树:
如图,我们标记出了三号结点为绿色.从树的根结点走到三号节点经过的路径上的字母组成的单词是”ap”,如果我们想知道字典中以”ap”作为前缀的单词的个数.那么值需要统计以三号结点作为根结点的结点中黑色结点的个数.而且再建立字典Trie树的时候我们就可以进行记录.
记录方法:
L[T] L [ T ] 从根结点到编号是 T T 的结点过程中经过边表示字母组成的单词作为前缀的在字典中的单词数目.设置
的初始值是0.每当加入一个单词,如果达到了结点 T T ,就把
加1.这样查询以 s s 作为前缀的字典中的单词个数的时候时间复杂度就是
了.
时间复杂度分析:
假设建立了有