基本数据结构①——trie树

Posted aidenpearce

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基本数据结构①——trie树相关的知识,希望对你有一定的参考价值。

RT

trie树是一种用于实现字符串的快速检索的树结构;大该是每个节点都有若干个指向字符的指针;如图:

技术分享图片

好像看不清,不过没多大事;

然后trie树支持两个操作:插入,查找;

先放代码

struct data      
        p=trie[p].son[ch];
    }
    trie[p].have=true;
}
int f(char *s)
{
    int len=strlen(s),p=0;
    for(int k=0;k<len;++k)
    {
        int ch=s[k]-a;
        if(!trie[p].son[ch]) return false;
        p=trie[p].son[ch];
    }
    if(!trie[p].have) return false;//其实写return trie[p].have 就行;
}

然后就可以来到例题https://www.luogu.org/problemnew/show/P2580;

但是这学了trie树还需要一个树上dfs

比如我们可以按字典序记录;

void dfs(int p)
{
    if(trie[p].num) a[trie[p].num]=++t;    //当他是结尾时,标记,a数组存的是字符串编号
    for(int i=0;i<26;++i)
    {
        if(trie[p].son[i]) dfs(trie[p].son[i]);
    }
}

以后再补充;

 

以上是关于基本数据结构①——trie树的主要内容,如果未能解决你的问题,请参考以下文章

信息检索——初识Trie树

高级数据结构(Ⅴ)单词查找树(Trie)

基本数据结构—Trie

trie树(字典树)

Trie树

天天数据结构和算法PHP中trie数据结构的使用场景和代码实例