只记录用法和对应代码,对于过程不做过多解释。
字典树介绍
字典树又称Trie树,单词查找树,是一种树形结构,也是哈希树的一种变种,主要用于统计,排序和存储大量的字符串(但不限于字符串)。
利用字符串的公共前缀来减少查询时间最大程度的减少无谓的字符串比较,查询效率比哈希树高。
字典树的创建
字典树的创建是指把所有字符串都插入字典树中。字符串是由小写字母组成。每个节点有26个域。用二维数组保存。
算法代码:
void insert(string str)
{
int len = str.length(),p=1;
for(int i = 0;i < leng;i++)
{
int ch = str[i]-'a';
if(!trie[p][ch])
{
trie[p][ch]=++tot;//记录下标
}
p = trie[p][ch];
}
end[p]=true;
}
字典树的查找
算法代码:
bool search(string str)
{
int len=str.length(),p=1;
for(int i = 0;i <len;i++)
{
p=trie[p][s[i]-'a'];
if(!p)
{
return false;
}
return end[p];
}
}