Trie模板

insert

void insert()//插入单词s
{
    len=strlen(s);//单词s的长度
    root=0;//根节点编号为0
    for(int i=0;i<len;i++)
    {
        int id=s[i]-'a';//第二种编号
        if(!trie[root][id])//如果之前没有从root到id的前缀 
                    trie[root][id]=++tot;//插入,tot即为第一种编号
        root=trie[root][id];//顺着字典树往下走
    }
}

search

bool search()
{
    root=0;//从根结点开始找
    for(int i=0;s[i];i++)
    {
        int x=s[i]-'a';
        if(trie[root][x]==0)  return false;//以root为头结点的x字母不存在,返回0 
        root=trie[root][x];//为查询下个字母做准备,往下走 
    }
    return true;//找到了
}
posted @ 2018-02-23 13:19  Neworld1111  阅读(128)  评论(0编辑  收藏  举报