首页 > 其他 > 详细

字典树

时间:2020-07-27 13:01:11      阅读:86      评论:0      收藏:0      [点我收藏+]

trie树

又称单词查找树,Trie树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:利用字符串的公共前缀来减少查询时间,最大限度地减少无谓的字符串比较,查询效率比哈希树高。

每一个节点都有26个子节点,t数组代表节点的子节点的编号,如果是0就代表没有那个子节点。

int t[maxn][26],cnt;

bool isw[maxn];     //标记节点是否是尾节点

void insert(char *s,int rt)     //或者string s
{
    for(int i = 0; s[i]; i++)
    {
        int x = s[i]-‘a‘;
        if(t[rt][x] == 0)
        {
            t[rt][x] = ++cnt;       //不存在这个节点就建立这个节点
        }
        rt = t[rt][x];
    }
    isw[rt] = 1;        //标记这个是单词结尾
}

bool find(char *s,int rt)       //查询是否存在这个字符串
{
    for(int i = 0; s[i]; i++)
    {
        int x = s[i]-‘a‘;
        if(t[rt][x] == 0) return false;
        rt = t[rt][x];
    }
    return true;
}

例题:hdu 1251

字典树

原文:https://www.cnblogs.com/hezongdnf/p/13384351.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!