Trie(字典树, 前缀树)
admin
2024-02-03 23:01:26
0

Trie(字典树, 前缀树)

Tire树:

又叫做字典树, 前缀树(prefixTree), 单词查找树或键树, 是一种多叉树结构

注意: Trie是一个多叉树
可以读作"try", 也可以读作"tree"

字典树的性质:

  1. 根节点(root)不包含字符, 除根节点之外的每一个节点都包括一个字符

    • 根节点是作为一个虚拟节点存在的

      • 为什么我们要将根节点作为虚拟节点?(也就是为什么我们不在根节点中存储数据了)

        • 因为我们的树的根节点有一个, 而开始的时候第一层我们要存储的字母有26个, 所以我们只能是将头结点设置为虚拟结点, 然后从头结点的下一层开始存储字母

        • 小结: 很多时候如果我们第一层中就要求有多个数据时, 并且如果是要使用树结构来实现, 这个时候我们就要将头结点设置为虚拟头结点, 从头结点的下一层开始存储数据
  2. 从根节点到某一个节点路径上所经过的字符连接起来, 即为该结点对应的字符串

  3. 任意节点的所有子节点所包含的字符都不相同

trie树的使用场景:

  1. 搜索引擎的自动补全
    • 当我们输入前几个字母之后, 就会匹配很多对应的前缀单词, 这个功能就是使用trie树实现的
  2. IP路由的最长前缀匹配
  3. 拼写检查
  4. 打字预测(输入法)

对于词频统计等, 我们之前使用Map完成, 我们将单词存储到key中, 单词出现的次数存储到value中, 但是对于词频统计, 其实我们也可以使用trie树来解决, 并且trie树存储时还节省空间, 因为trie树来完成词频统计时如果我们的某个单词的前缀是我们的另一个单词, 这个时候我们的另一个单词和这个单词就只用存储一次, 只用存储一个长的就可以了, 这个长单词的一部分前缀就是短单词

  • 我们使用trie树完成词频统计时只需要在isword属性为true的结点中使用count值就可以统计词频
    • isword就是trie树中的一个引用, 这个引入为true时就是表示这个节点所表示的字符串是一个单词
    • count也是trie树中的一个引用, 用于统计这个节点所表示的字符串的个数

Trie树练习题: 208, 211, 212

Bitwise Trie : 一种特殊的Trie树

  • Bitwise Trie树中每个node都有只有两个分支, 存储的是0或者是1
    • 也就是Bitwise Trie是一个二叉树
Bitwise Trie相当于对值进行了一个编码, 在对于做异或等类似算法中常常使用(在比较两个值的编码的相同于不同点的时候常使用)

Bitwise Trie树练习题: 421

相关内容

热门资讯

【MySQL】锁 锁 文章目录锁全局锁表级锁表锁元数据锁(MDL)意向锁AUTO-INC锁...
【内网安全】 隧道搭建穿透上线... 文章目录内网穿透-Ngrok-入门-上线1、服务端配置:2、客户端连接服务端ÿ...
GCN的几种模型复现笔记 引言 本篇笔记紧接上文,主要是上一篇看写了快2w字,再去接入代码感觉有点...
数据分页展示逻辑 import java.util.Arrays;import java.util.List;impo...
Redis为什么选择单线程?R... 目录专栏导读一、Redis版本迭代二、Redis4.0之前为什么一直采用单线程?三、R...
【已解决】ERROR: Cou... 正确指令: pip install pyyaml
关于测试,我发现了哪些新大陆 关于测试 平常也只是听说过一些关于测试的术语,但并没有使用过测试工具。偶然看到编程老师...
Lock 接口解读 前置知识点Synchronized synchronized 是 Java 中的关键字,...
Win7 专业版安装中文包、汉... 参考资料:http://www.metsky.com/archives/350.htm...
3 ROS1通讯编程提高(1) 3 ROS1通讯编程提高3.1 使用VS Code编译ROS13.1.1 VS Code的安装和配置...
大模型未来趋势 大模型是人工智能领域的重要发展趋势之一,未来有着广阔的应用前景和发展空间。以下是大模型未来的趋势和展...
python实战应用讲解-【n... 目录 如何在Python中计算残余的平方和 方法1:使用其Base公式 方法2:使用statsmod...
学习u-boot 需要了解的m... 一、常用函数 1. origin 函数 origin 函数的返回值就是变量来源。使用格式如下...
常用python爬虫库介绍与简... 通用 urllib -网络库(stdlib)。 requests -网络库。 grab – 网络库&...
药品批准文号查询|药融云-中国... 药品批文是国家食品药品监督管理局(NMPA)对药品的审评和批准的证明文件...
【2023-03-22】SRS... 【2023-03-22】SRS推流搭配FFmpeg实现目标检测 说明: 外侧测试使用SRS播放器测...
有限元三角形单元的等效节点力 文章目录前言一、重新复习一下有限元三角形单元的理论1、三角形单元的形函数(Nÿ...
初级算法-哈希表 主要记录算法和数据结构学习笔记,新的一年更上一层楼! 初级算法-哈希表...
进程间通信【Linux】 1. 进程间通信 1.1 什么是进程间通信 在 Linux 系统中,进程间通信...
【Docker】P3 Dock... Docker数据卷、宿主机与挂载数据卷的概念及作用挂载宿主机配置数据卷挂载操作示例一个容器挂载多个目...