版权声明:未经允许禁止转载。转载请联系我WX:yuyi5453。并且注明出处 https://blog.csdn.net/weixin_40532377/article/details/83003601
关于字典树的基础知识我就不多说了,网上的讲解已经很详细了
我就直接挂上模板,然后挂两道题目,实在是没大有时间写详细的教程,也懒得写了
模板题虽然代码量多点,但是一般比较好想。
还有一个想说的就是每个人都有自己的代码风格,只要自己写着顺手别人看得懂就行,不用强行去模仿
别人的代码风格(除非你写得真的烂)。
第一步:节点声明
struct Trie{
int cnt; //这个地方用来处理自己想要处理的操作
Trie *next[maxn];
};
第二步:插入函数(插入字符串的函数)
Trie* init(Trie* p){ //创建一个新的节点
p=new Trie; //p=(Trie*)malloc(sizeof(Trie))
p->cnt=0;
for(int i=0;i<maxn;i++){
p->next[i]=NULL;
}
return p;
}
void insert(Trie *root,char* s){ //插入字符串
if(root==NULL||*s=='\0'){
return ;
}
Trie *p=root;
char* q=s;
while(*q!='\0'){
if(!p->next[*q-'a']){
Trie* temp=init(temp);
p->next[*q-'a']=temp;
}
p=p->next[*q-'a'];
p->cnt++;
q++;
}
}
第三步:查找函数
void search(Trie *root,char* s){
//需要什么操作每个问题都不一样需要自己去写了
}
放几道Trie树的题目(因为我发现关于Trie树的题目比其他的还是相对少),放在这个博客里面:https://blog.csdn.net/weixin_40532377/article/details/83003750。
以后找到好的题目可以加进去。