您的位置:首页 > 其它

Trie(字典树模板)

2017-03-12 18:20 225 查看
(查找是否纯在前缀)

结构体 Trie

成员函数:

void init() 初始化

void insert(char*str) 插入字符串str

int query(int s) 从s开始查找是否纯在一个字符串是另一个字符串的前缀

//N 字符集大小  如果是数字为10,如果是字母为26,大小写为52
//AIM 字符集最小字符
struct Trie
{
struct node
{
bool flog; //标记单词结尾
int next
;
void init()
{
for(int i=0;i<N;i++)
next[i]=-1;
flog=false;
}
};
node p[100005];
int top;
void init()
{
top=1;
p[0].init();
}
void insert(char *str) //插入字符串
{
int pp=0;
for(int i=0;str[i];i++)
{
if(p[pp].next[str[i]-AIM]==-1)
{
p[pp].next[str[i]-AIM]=top;
p[top].init();
top++;
}
pp=p[pp].next[str[i]-AIM];
}
p[pp].flog=true;
}
int query(int s) //查找
{
if(p[s].flog!=0)
{
for(int i=0;i<N;i++)
if(p[s].next[i]!=-1)
return false;
return true;
}
bool ans=true;
for(int i=0;i<N;i++)
{
if(p[s].next[i]!=-1)
ans=ans&&query(p[s].next[i]);
}
return ans;
}

}T;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: