什么是 Trie?
Coddy 字典树:数据结构系列第 8 课 课程的第 2 课,共 14 课。
字典树(读作“try”,是 retrieval 的缩写)是一种树形数据结构,用于按字符存储和查找字符串。树中的每条边都标记着一个字符,从根节点到某个已标记节点的每条路径都会拼出一个已存储的单词。
这种结构让前缀查询变得非常快。检查字典树中是否有以 "car" 开头的单词,只需从根节点查找 3 个字符,无论其中存储了多少千个单词。自动补全、拼写检查和 IP 路由表等功能背后都离不开字典树。
字典树中的每个节点都保存着两项状态:
children:从字符映射到下一个TrieNode的映射。isEndOfWord:一个标记。如果从根节点到当前节点的路径拼出了一个已插入的完整单词,它的值就是true。
字典树的 5 种主要操作是:
- 插入:添加一个单词,并沿途创建缺失的节点。
- 查找:检查是否存储了完整的单词。
- 前缀查找:检查是否有任何已存储的单词具有给定前缀。
- 删除:移除一个单词,并清理不再使用的分支。
- 单词计数:统计存储的不同单词数量。
让我们来构建一个 Trie 类吧!
亲手试试
这节课没有代码挑战。
字典树:数据结构系列第 8 课中的所有课
自己练习: C 在线编译器