Trie树(字典树)整理
Posted inductivesorting-qyf
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Trie树(字典树)整理相关的知识,希望对你有一定的参考价值。
字典树 (Trie)
用于存储字符串。树的每条边恰好表示一个字符,每个节点代表从根到该节点的路径所对应的字符串。
简介与操作实现可见蓝书P82~83。
Trie字典树很好地利用了前缀,节省了很多空间。
1 //先说明一下:本代码段的字符串d的下标都是从1开始 2 inline void insert(char *d)//向Trie树插入字符串d 3 { 4 int l=strlen(d+1),now=0,num; 5 for(int i=1;i<=l;++i) 6 { 7 num=d[i]-‘a‘;//字符化为数字下标 8 if(!tree[now][num])//当前节点不存在该字母的边,即该字母还未在当前节点插入过 9 tree[now][num]=++cnt; 10 now=tree[now][num]; 11 } 12 ed[now]=1;//最后标明一下字符串结尾节点,说明该节点代表了一个已插入过的字符串 13 } 14 15 inline int fin(char *d)从Trie树查询字符串d 16 { 17 int l=strlen(d+1),now=0,num; 18 for(int i=1;i<=l;++i) 19 { 20 num=d[i]; 21 if(!tree[now][num])//不存在对应节点了,说明Trie中没有这个串 22 return 0; 23 now=tree[now][num]; 24 } 25 return ed[now];//查询到最后还要看当前节点是否代表一个插入过Tire树的字符串 26 }
应用:
以上是关于Trie树(字典树)整理的主要内容,如果未能解决你的问题,请参考以下文章