首页 > 代码库 > 模板——字典树Trie Tree
模板——字典树Trie Tree
/*字典序模板*/ #define MAX 26 //每层有多少种类 typedef struct trie { trie *next[MAX]; int v;//一个字典树到此有多少相同前缀的数目 }; trie *root; void creat_trie(char *str) { int len=strlen(str); trie *p=root,*q; for(int i=0;i<len;i++) { int id=str[i]-‘a‘; if(p->next[id]==NULL) { q=(trie*)malloc(sizeof(trie)); q->v=1; for(int j=0;j<MAX;j++) q->next[j]=NULL; p->next[id]=q; p=p->next[id]; } else { p->next[id]->v++; p=p->next[id]; } } p->v=-1; } int find_trie(char *str) { int len=strlen(str); trie *p=root; for(int i=0;i<len;i++) { int id=str[i]-‘a‘; p=p->next[id]; if(p==NULL) return 0; if(p->v==-1) return -1; } return -1; } //超内存怎么办? //释放空间 void clear_trie(trie *t) { if(t==NULL) //空树直接返回 return ; for(int i=0;i<MAX;i++) { if(t->next[i]==NULL) free(t); else clear_trie(t->next[i]); } }
模板——字典树Trie Tree
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。