首页 > 其他 > 详细

【笔记】字典树

时间:2020-01-31 20:18:30      阅读:56      评论:0      收藏:0      [点我收藏+]

字典树(Trie树、字母数、前缀树)

作用

一般是存储单词(以下操作仅限于小写单词树)

优点

共用前缀,省空间,查询快

Trie树的应用

?(1) 字符串检索
?(2) 字符串最长公共前缀

支持操作

询问单词
插入单词
删除单词

操作工具

一棵树,用ch[u][i]表示u节点的i号儿子(i唯一的确定了一个从a到z的字母)的编号,相当于指针
一个单词,用于插入或询问是否在树
bool类型的if_end[u],表示u节点存储的是否为一整个单词

边和节点

边存的是字母,节点存的是从根到此节点经过路径所连成的单词
根节点啥也没有

插入

void insert(char *s)
{
    int len = strlen(s);
    int u = 1;//根
    for(int i=0;i<len;i++)
    {
        int c = s[i]-'a';
        if(ch[u][c]==0)
            ch[u][c]=++tot;//tot节点总数
        u = ch[u][c];
    }
    bo[u] = 1;
}

查询

```
bool find(char *s)
{
int u = 1;
int len = strlen(s);
for (int i = 0; i < len; i++)
{
int c = s[i] - ‘a‘;
if(!ch[u][c])
return 0;
u = ch[u][c];
}
return true;
}

删除

···

做题时注意分类讨论

其实Trie不仅可以寸单词,还可应用于异或,称之为01字典树

【笔记】字典树

原文:https://www.cnblogs.com/ZhengkunJia/p/12246228.html

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