字典树【模板】

来源:互联网 发布:微信群控系统源码 编辑:程序博客网 时间:2024/06/07 06:50
struct TrieNode{    int Count;  //前缀单词出现次数    struct TrieNode* Next[26];  //26个字母节点}Tree,*Trie;TrieNode *root;void Create()   //初始化{    root = new TrieNode;    memset(root->Next,NULL,sizeof(root->Next));    root->Count = 0;}void Insert(char *s)   //插入字符串s[],O(M*L){    TrieNode *p, *q;    p = root;    while(*s)    {        if(p->Next[*s-'a'] == NULL)        {            q = new TrieNode;            memset(q->Next,NULL,sizeof(q->Next));            q->Count = 1;            p->Next[*s-'a'] = q;        }        else            p->Next[*s-'a']->Count++;        p = p->Next[*s-'a'];        s++;    }}int Find(char *s)   //查找字符串s[] O(N*L){    TrieNode *p, *q;    p = root;    while(*s)    {        if(p->Next[*s-'a'] == NULL)            return 0;        p = p->Next[*s-'a'];        s++;    }    return p->Count;}int Dele(TrieNode *p)  {      if(p == NULL)          return 0;      for(int i = 0; i < 26; ++i)          if(p->Next[i] != NULL)              Dele(p->Next[i]);      free(p);  }

2 1
原创粉丝点击