字典树

来源:互联网 发布:风险管理矩阵 编辑:程序博客网 时间:2024/05/01 10:18

利用公共前缀减少查询时间,节省内存

静态分配,动态分配malloc次数太多,效率不行

const int maxc = 26;const int maxn = 1000010;typedef struct trie{int v;struct trie *next[maxc];}trie;trie mem[maxn];int alloc;void init(trie **root){alloc = 0;*root = create();}trie *create(){trie *p = &mem[alloc++];p->v = 0;for(int i = 0; i < maxc; ++i){p->next[i] = NULL;}return p;}void insert(trie *root, char *s){while(*s){int b = *s - 'a';++s;if(root->next[b] == NULL){root->next[b] = create();}root = root->next[b];++root->v;}}int search(trie *root, char *s){while(*s){int b = *s - 'a';++s;if(root->next[b] == NULL){return 0;}root = root->next[b];}return root->v;}


0 0