码迷,mamicode.com
首页 > 其他好文 > 详细

基本数据结构①——trie树

时间:2018-02-20 22:52:09      阅读:197      评论:0      收藏:0      [点我收藏+]

标签:show   分享图片   struct   trie   har   www   指针   字典   alt   

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树

标签:show   分享图片   struct   trie   har   www   指针   字典   alt   

原文地址:https://www.cnblogs.com/AidenPearce/p/8455946.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!