代码
struct Trie{
int v;
Trie *next[26];
Trie(){
v=0;
memset(next,NULL,sizeof next);
}
};
Trie* root;
void ins(char *s){
int l=strlen(s);
Trie *p=root;
for(int i=0;i<l;++i){
int id=s[i]-'a';
if(p->next[id]==NULL)
p->next[id]=new Trie();
p=p->next[id];
}
++p->v;
}
int fin(char *s){
Trie *p=root;
int l=strlen(s);
for(int i=0;i<l;++i){
int id=s[i]-'a';
p=p->next[id];
if(p==NULL) return 0;
}
return p->v;
}
int del(char *s){
Trie *p=root;
int l=strlen(s);
for(int i=0;i<l;++i){
int id=s[i]-'a';
p=p->next[id];
}
--p->v;
}
int delAll(Trie *t){
if(t==NULL) return 0;
for(int i=0;i<26;++i)
if(t->next!=NULL)
del(t->next[i]);
delete t;
return 0;
}