字典树模板

码:

点击查看代码
struct Node{
    bool isend;
    int son[26];
    int num;
}tir[N];

int tircnt = 1;
void tir_insert(string s){
    int now = 0;
    for(int i = 0; i < s.size(); i++){
        int ch = s[i] - 'a';
        if(tir[now].son[ch] == 0)
            tir[now].son[ch] = tircnt++;
        now = tir[now].son[ch];
        tir[now].num++;
        if(i == s.size() - 1) tir[now].isend = true;
    }
}
int tir_find(string s){
    int now = 0;
    for(int i = 0; i < s.size(); i++){
        int ch = s[i] - 'a';
        if(tir[now].son[ch] == 0) return 0;
        now = tir[now].son[ch];
    }
    if(!tir[now].isend) return 0;
    if(tir[now].num == 0) return 0;

    return 1;
}
第一次知道字典树是在大一下,当时被线段树,树状数组摧残的根本不敢直视一颗新种的 **树** 但这是后续字符串数据结构的基石,我可以走多远呢
posted @ 2024-05-16 21:15  9102700  阅读(21)  评论(0)    收藏  举报