首页 > 其他 > 详细

字典树模板

时间:2018-07-12 15:57:11      阅读:173      评论:0      收藏:0      [点我收藏+]
 1 typedef struct letter{
 2     int finished = 0;
 3     char le;
 4     letter *son, *ne;
 5     letter():le(\0),son(NULL),ne(NULL){};
 6 }letter,*pointer;
 7  
 8 struct Trie
 9     {
10         pointer rt;
11         Trie() {rt = new letter();}
12         void insert(char *word, int len)
13             {
14                 pointer u = rt;
15                 for(int i = 0; i < len; i ++)
16                     {
17                         pointer v = u->son;
18                         if(v != NULL)   while(v->ne != NULL && v->le != word[i]) v = v->ne;
19                         if(v == NULL || v->ne == NULL && v->le != word[i])
20                             {
21                                 pointer &p = (v == NULL ? u->son :v->ne);
22                                 p = new letter();
23                                 p->le = word[i];
24                                 if(i == len - 1)    ++ p->finished;
25                                 u = p;
26                             }
27                         else u = v;
28                     }
29             }
30          
31         bool  find(char *word, int len)
32             {
33                 pointer u = rt;
34                 for(int i = 0; i < len; i ++)
35                     {
36                         pointer v = u->son;
37                         if(v == NULL)   return false;
38                         while(v->ne != NULL && v->le != word[i])  v = v->ne;
39                         if(v->ne == NULL && v->le != word[i]) return false;
40                         u = v;
41                     }
42                 return true;
43             }
44     };

 

字典树模板

原文:https://www.cnblogs.com/2020pengxiyue/p/9299368.html

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