首页 > 其他 > 详细

Trie学习总结

时间:2020-11-02 21:06:23      阅读:38      评论:0      收藏:0      [点我收藏+]

Trie树学习总结

字典树,又称前缀树,是用于快速处理字符串的问题,能做到快速查找到一些字符串上的信息。

另外,Trie树在实现高效的同时,会损耗更多的空间,所以Trie是一种以空间换时间的算法。

定义

1 struct kkk{
2     int son[27],cnt;
3     bool flag;
4 }trie[maxn];

首先是插入操作:

 1 void insert(string s)
 2 {
 3     int len=s.size(),u=0; //获取长度len,u是当前点的编号,根的编号是0
 4     for(int i=0;i<len;i++)
 5     {
 6         int v=s[i]-a;//获取位置
 7         if(!trie[u].son[v]) //如果没有继续下去的节点
 8         trie[u].son[v]=++num;//就新建一个
 9         u=trie[u].son[v];//跳到下一个点去插入
10     }
11     trie[u].flag=true; //标记此处是一个单词
12 }

然后是查询操作:

 1 int find(string s){
 2     int len=s.size(),u=0;
 3     for(int i=0;i<len;i++){
 4         int v=s[i]-a;     //同上
 5         if(!trie[u].son[v])return 3;    //找不到返回没有
 6         u=trie[u].son[v];   //同上
 7     }
 8     if(trie[u].flag==false)return 3;    //不是一个单词就返回没有
 9     if(!trie[u].cnt){       //如果没有被点过
10         trie[u].cnt++;      //标记被点过了
11         return 1;           //返回有
12     } return 2;         //不然返回重复
13 }

 

Trie学习总结

原文:https://www.cnblogs.com/csx-zzh/p/13916276.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!