[复习笔记]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
然而并不会