字典树,也称Trie或字母树,指某个字符串集合对应的有根树。树的每条边上恰好对应一个字符,每个顶点代表从根到该节点的路径所对应的字符串,有时我们也称Trie上的便为转移,顶点为状态。实际上,任意一个线节点所代表的字符串,都是字符集合中某些串的前缀。
现在要对一个字符集为小写字母的Trie树插入一个字符集S。
模版:
void insert(char *s)
{
int len=strlen(s);
int u=1;
for(int i=0;i<len;i++)
{
int c=s[i]-'a';
if(!h[u][c])
ch[u][c]=++tot;
u=ch[u][c];
}
bo[u]=true;
}
查询一个字符串S是否是给定字符串集合中某个的前缀。
模版:
bool find(char *s)
{
int len=strlen(s);
int u=1;
for(int i=0;i<len;++i)
{
int c=s[i]-'a';
if(!ch[u][c])
return false;
u=ch[u][c];
}
return true;
}