前缀树,也叫字典树,Trie
前缀树 是一种树形数据结构,用于高效地存储和检索字符串数据集中的键。这一数据结构有相当多的应用情景,例如自动补完和拼写检查。
可以简单地认为,Trie是一种26叉树,每一个节点都有26个子节点,对应a-z。
单词不存储于字典树的节点内,而是字典树从根节点到该节点的路径
在具体实现上,python使用字典性能更好,而C++则是使用数组性能更好
字典树练习题集
https://leetcode-cn.com/tag/trie/problemset/模板
1 | root={} |
实现 Trie (前缀树)
模板
1 | class Trie: |
添加与搜索单词 - 数据结构设计
注意
if cur[c]=='#':continue
,不能忘了
1 | class WordDictionary: |
词典中最长的单词
1 | class Solution: |
字典序排数
字典树+DFS
1 | class Solution: |
单词替换
找到一个单词的前缀直接返回,可以保证最短
1 | class Solution: |
实现一个魔法字典
单词比如hello,可以构造候选单词列表:aello……zello,hallo……hzllo,然后在trie里面搜索
1 | class MagicDictionary: |
键值映射
找到根节点后,遍历多叉树累加val
1 | class MapSum: |
面试题 16.02. 单词频率
用cur[‘#’]记录频率
1 | class WordsFrequency: |