字典树(Tire树)

字典树(Tire树)

字典树是一种多叉树,又称为前缀树。核心思想是利用字符串的公共前缀。

字典树的根节点为空,从根节点到某一节点路径上的字符连接起来构成字符串,完整的字符串在链上而非结点上,一个节点的所有子节点都具有相同公共前缀。

img

普通Tire树

struct node{
    bool end;//标记一个单词的结束
    int child[26];//下标存储英文数据,数组本身存储该数据的孩子结点的位置
}tree[MAX];
int cnt=1;//下一个新字符的存储位置(类似于链式前向星),注意root结点不用,故cnt从1开始
  • 插入函数:
void insert(string s){
    int now=0;//当前工作指针
    for(int i=0;i<s.size();i++){
        int c=s[i]-'a';//将字符转换成0-26
        if(!tree[now].child[c]){//若字典树中未出现此前缀字符,执行插入结点操作
            tree[now].child[c]=cnt++;//执行插入结点操作
        }
        now=tree[now].child[c];//更新当前工作指针到其孩子结点
        if(i==s.size()-1) tree[now].end=1;//一个单词完整插入,在其最后一个字符处标记结束
    }
}
  • 查找函数:
bool check(string s){
    int now=0;//当前工作指针
    for(int i=0;i<s.size();i++){
        int c=s[i]-'a';
        if(!tree[now].child[c]) return 0;//未找到该字符,此字符串查找失败
        now=tree[now].child[c];
    }
    if(!tree[now].end) return 0;//未找到结尾标记,此字符串为某个字符串的前缀,但未出现该字符串,查找失败
    return 1;//查找成功
}

01Tire树

将数字的二进制表示插入到Tire树中。

相关推荐

  1. Tire 字典、前缀

    2024-07-12 20:14:01       29 阅读
  2. 数据结构(Trie字典))

    2024-07-12 20:14:01       22 阅读
  3. 字典Trie】LeetCode-208. 实现 Trie (前缀)

    2024-07-12 20:14:01       53 阅读
  4. 蓝桥杯每日一题(Tire字典

    2024-07-12 20:14:01       40 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-12 20:14:01       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-12 20:14:01       71 阅读
  3. 在Django里面运行非项目文件

    2024-07-12 20:14:01       58 阅读
  4. Python语言-面向对象

    2024-07-12 20:14:01       69 阅读

热门阅读

  1. docker pull 报错:missing signature key,docker版本问题

    2024-07-12 20:14:01       18 阅读
  2. 第六篇:Python元组:不可变序列的魅力

    2024-07-12 20:14:01       18 阅读
  3. Linux rpm和ssh损坏修复

    2024-07-12 20:14:01       21 阅读
  4. 【cnocr的安装使用】

    2024-07-12 20:14:01       20 阅读
  5. c#获取本机的MAC地址(附源码)

    2024-07-12 20:14:01       20 阅读
  6. C++ --> 类和对象(二)

    2024-07-12 20:14:01       21 阅读