首页 > 其他分享 >字典树(Tire树)

字典树(Tire树)

时间:2024-07-14 23:26:37浏览次数:12  
标签:结点 Tire int tree child 字符串 now 字典

字典树(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树中。

标签:结点,Tire,int,tree,child,字符串,now,字典
From: https://blog.csdn.net/Yerosius1/article/details/140303639

相关文章

  • Python 字典(Dict)详解与实战应用
    目录前言一、字典的定义和创建1.使用花括号定义2.使用dict()函数创建二、字典的三种遍历方式方式1:遍历字典的键,通过键获取值 dict.keys()方式2:遍历字典的值,但不能通过值获取键dict.values()方式3:最常用的方法:直接获取键值对 dict.items()三、字典的常见操作1.添......
  • sqlalchemy pandas转化字典转为orm写入到sqlite数据库报错类型错误的解决办法
    使用pandas读取csv数据,然后将其转化为字典,再写入到数据库的时候,数据库总是报错类型错误,于是转为orm之前,统一转化一下类型fromsqlalchemyimportDECIMAL,Index,String,Date,Integer,Text,CHAR,SmallInteger,Float,Time,case,and_,extract,TypeDecoratorfrom......
  • Python数据容器(dict字典、set集合)
    dic字典dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。字典的创建使用大括号{}包含键值对,并用冒号:分隔键和值,形成键:值对。字典的特性唯一键:字典中的每个键都必须是唯一的。值可以取任何数据类型,如字符串,数字,元组。无序(Python......
  • 掌握字典:开启数据处理的新大门
    一.字典的定义在Python中,字典是一种非常重要的数据结构,它提供了一种存储键值对的方式。与列表(List)和元组(Tuple)等线性数据结构不同,字典通过键(Key)来访问其元素,而不是通过索引。这种特性使得字典成为处理需要快速查找、插入和删除元素的数据集时的理想选择。字典在许多编程语言中......
  • 【Python123题库】#查询省会 #字典的属性、方法与应用
    禁止转载,原文:https://blog.csdn.net/qq_45801887/article/details/140081665参考教程:B站视频讲解——https://space.bilibili.com/3546616042621301有帮助麻烦点个赞~~Python123题库查询省会字典的属性、方法与应用查询省会类型:字典‪‬‪‬‪‬‪‬‪‬‮‬‪‬......
  • 对!就是你!python特训之字典怎么学?我教你!超详细!
    目录一、字典的定义二、字典的键与值三、字典的常见操作总结一、字典的定义字典(Dictionary)是一种在多种编程语言中广泛使用的数据结构,用于存储键值对(key-valuepairs)的集合。在字典中,每个元素都是一个键值对,其中键(Key)是唯一的,用于标识对应的值(Value)。键和值可以是任意......
  • LDAPWordlistHarvester:基于LDAP数据的字典生成工具
    关于LDAPWordlistHarvesterLDAPWordlistHarvester是一款功能强大的字典列表生成工具,该工具可以根据LDAP中的详细信息生成字典列表文件,广大研究人员随后可以利用生成的字典文件测试目标域账号的非随机密码安全性。工具特征1、支持根据LDAP中的详细信息生成字典文件:其中包......
  • 易优cms网站CMS数据字典数据库-Eyoucms
    CMS数据字典提示:查找数据表,请按Ctrl+F,输入表名。ey_ad表注释:广告表字段 类型 空 默认 注释id int(11) 否 广告idpid int(11) 否 0 广告位置IDmedia_type tinyint(1) 是 0 广告类型title varchar(60) 是 广告名称links varchar(255) 是 广告链接litpic varcha......
  • python字典的四种遍历方式
    python字典的四种遍历方式 使用for循环遍历字典的键:my_dict={'a':1,'b':2,'c':3}forkeyinmy_dict:print(key,my_dict[key]) 使用items()方法遍历字典的键值对:my_dict={'a':1,'b':2,'c':3}fork......
  • 认识python字典
    一、字典的定义        字典是Python中的一种数据结构,它可以存储键值对(key-valuepair)。每个键(key)都是唯一的,并且与它相关联的是一个值(value)。字典是无序的,可以根据键来访问和修改其中的值。字典使用花括号{}来定义,并使用冒号 : 来分隔键和值,每个键值对之间使......