字典树【Trie】

发布时间 2023-11-04 11:58:36作者: 爱新觉罗LQ

字典树【Trie】

一种能够快速插入和查询字符串的多叉树结构
节点的编号各不相同,根节点编号为0,其它节点用来标识路径,还可以标记单词插入的次数。边标识字符
Tier维护字符串的集合,支持2种操作:

  1. 向集合中拆入一个字符串, void insert(char c)
  2. 向集合中查询一个字符串,int query(char c)

建字典树

儿子数组 cha[p][j]:存储从节点 p 沿着 j 这条边走到的子节点

  • 边为26个小写字母(a-z)对应的映射值为:0 - 25
  • 每个节点最多可以有 26 个分叉

例如:ch[0][2] = 1,ch[1][0] = 2,ch[2][19] = 3

计数数组 cnt[p] 存储以节点 p 结尾的单词的插入次数

节点编号 index:用来给节点编号

注意事项

  1. 空 Trie 仅有一个 root 节点,编号为 0
  2. 从 root 节点开始插,枚举字符串的每个字符
  • 如果有儿子,则 p 指针走到儿子
  • 如果没有,则先创建儿子,p 指针再走到儿子
  1. 在单词结束点记录插入次数