首页 > 其他分享 >Trie字典

Trie字典

时间:2023-09-25 10:11:21浏览次数:23  
标签:前缀 Trie 集合 字符串 节点 字典

Trie树,又叫字典树,前缀树(Prefix Tree),单词查找树,是一种多叉树的结构.
image
{"a","apple","appeal","appear","bee","beef","cat"} 深色表示接受态
image
关键字集合{"pool", "prize", "prepare", "preview", "produce", "progress"}.
image

Trie 树举例
原字符串集合:{ abcde 、aced 、bcdf 、bcff }
插入字符串:aced 、cdaa
新字符串集合:{ abcde 、abde、aced 、bcdf 、bcff 、cdaa }
image

字典树的基本性质如下:

  • 根节点不包含字符,除根节点外每一个节点都只包含一个字符
  • 从根节点到某一节点,路径上的字符连接起来,为该节点对应的字符串
  • 每个节点的所有子节点包含的字符都不相同.

Trie 树的优缺点
Trie 树是一种 以空间换时间 的数据结构。

  • 优点:利用字符串的 公共前缀 来减少查询时间,最大限度地减少无谓的字符串比较。

    公共前缀:例如字符串 abcdef 与 abcghi 有公共前缀 abc 。

  • 缺点:其每一个字符都可能包含至多字符集大小数目的指针。

在本模板采用子结点默认包含 所有字符集 的连接方式,
对于少量的字符串存储来说,大量的结点的儿子是空闲的,造成了 空间的浪费 。

当我们在浏览器的搜索框中打出一个字符串的前缀时,它便实时的显示出了以这个输入为前缀的一些字符串,也就是说,它帮我们搜索到了以这个输入为前缀的所有字符串,并且显示出了搜索频率较高的一些,这就是字典树的一个应用场景:单词自动补齐.

输入“人工” 自动带出人工开头的关键字

应用场景

  • 1、维护字符串集合(即字典)。
  • 2、向字符串集合中插入字符串(即建树)。
  • 3、查询字符串集合中是否有某个字符串(即查询)。
  • 4、统计字符串在集合中出现的个数(即统计)。
  • 5、将字符串集合按字典序排序(即字典序排序)。
  • 6、求集合内两个字符串的LCP(Longest Common Prefix,最长公共前缀)(即求最长公共前缀)。

标签:前缀,Trie,集合,字符串,节点,字典
From: https://www.cnblogs.com/vipsoft/p/17722820.html

相关文章

  • 根据数据库表生成数据字典
    sqlserver数据库SELECT表名=CASEWHENtt.column_id=1THENis_nameELSEN''END,字段序号=tt.column_id,字段名称=is_cname,字段描述=ISNULL(is_value,N''),主键=ISNULL(tt.PrimaryKey,N''),是否递增=CASEWHENtt.is_i......
  • postman:添加字典中包含字典的断言
    From: https://www.cnblogs.com/hanmk/p/10171062.html----------------------------------------------------------------------------如果字典中嵌套了列表或者字典,则按照索引引用即可,反正要看清响应内容的格式......
  • TienChin-课程管理-配置课程字典
    课程类型课程适用人群......
  • elasticsearch 自定义字典
    ......
  • 专业术语缩写字典(个人收集)
    EDA领域缩写全称意思EDAElectronicDesignAutomation电子设计自动化CADComputerAidedDesign计算机辅助设计CAD涉及更宽广的领域IPCoreIntellectualPropertyCore知识产权核LUTLookUpTable查找表DFMDesignForManufacture可制造工艺R......
  • LZW字典压缩算法及例程
    字典压缩算法是一种数据压缩方法,其基本原理是将重复出现的字符串或者片段用一个短的代表符号来表示,从而减小数据的存储空间。字典压缩算法通常用于无损压缩数据。一种常见的字典压缩算法是Lempel-Ziv-Welch(LZW)算法。该算法通过构建和更新一个字典来实现压缩。初始时,字典中包含......
  • Max retries exceeded with url: / (Caused by NewConnectionError('<urllib3.connect
    报错 Maxretriesexceededwithurl:/(CausedbyNewConnectionError('<urllib3.connection.HTTPSConnectionobjectat0x000001A73833FD00>:Failedtoestablishanewconnection:[WinError10060]  pipuninstallrequestsurllib3  #先卸载pipinstallre......
  • 字典
    #字典:存放具有映射关系的数据键值对(key,value)1.key不允许重复唯一且不可变2.字典不支持索引和切片,但可以通过键查询值3.字典无序通过键来存取4.字典可变且任意嵌套#字典的创建与删除grade={"语文:":67,"数学":90}print(grade)dict1={(1,2):"male",(1,3):"female"}......
  • 字典树
    classTrie{private:structNode{intend,cnt;intnxt[62];};vector<Node>trie;public:Trie(){init();}voidinit(){trie.assign(1,Node());}voidinsert(conststri......
  • Xor-Subsequence (字典树优化DP)
     思路;明显的是,后一个i要从前面一个进行更新, 利用dpeasy版本ai<=200,发现当n>=300时,对他是没有影响的,这样比较好记录ans进行更新,利用数据结构处理hard版本拆位,利用字典树dp,把参数变成相同的参数,a[i]和i,(比大小:前K位一样第K+1位不一样......