[复习笔记]Trie树

Trie 树

普通Trie树

简介

Trie树,又称字典树。(好水呀)

插入

从根节点向下扫一遍

inline void insert(int a[],int x)
{
    int u=0;
    for(int i=1;i<=x;i++)
    {    
        
        int v = a[i];
        if(!ch[u][v])
        {
            ch[u][v]=(++sz);
        }
        u=ch[u][v];
        sum[u]++;
    }
    isword[u]++;
    return;
}

查询

同样从根节点向下扫一遍即可

应用

基本是在节点上打标记

可以统计前缀,节点数等

或者在Trie上乱搞

 

Trie 的空间优化

如果一个普通的Trie数我们一般会开成

ch[MAXN][26]

或者

struct
{
    int a[26];
    bool isword;                
};

但是我们发现有时候呀不是没层都会有26个字符

那我们就可以用个MAP动态的更新

比如

struct
{
     map<char,int>word;
     bool isword;    
}

然后就很有意思了。。。

 

01 Trie

简介

就是可以拿来搞搞异或的东西

可以持久化

 

Double array Trie

然而并不会

 

posted @ 2019-07-28 21:23  wlzs1432  阅读(127)  评论(0编辑  收藏  举报