位置: 编程技术 - 正文

详解字典树Trie结构及其Python代码实现(字典树原理)

编辑:rootadmin

推荐整理分享详解字典树Trie结构及其Python代码实现(字典树原理),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:字典树算法,字典树算法,字典树模板,字典树算法,字典树的作用,字典树的作用,什么是字典树,什么是字典树,内容如对您有帮助,希望把文章链接给更多的朋友!

字典树(Trie)可以保存一些字符串->值的对应关系。基本上,它跟 Java 的 HashMap 功能相同,都是 key-value 映射,只不过 Trie 的 key 只能是字符串。Trie 的强大之处就在于它的时间复杂度。它的插入和查询时间复杂度都为 O(k) ,其中 k 为 key 的长度,与 Trie 中保存了多少个元素无关。Hash 表号称是 O(1) 的,但在计算 hash 的时候就肯定会是 O(k) ,而且还有碰撞之类的问题;Trie 的缺点是空间消耗很高。至于Trie树的实现,可以用数组,也可以用指针动态分配,我做题时为了方便就用了数组,静态分配空间。Trie树,又称单词查找树或键树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计和排序大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:最大限度地减少无谓的字符串比较,查询效率比哈希表高。Trie的核心思想是空间换时间。利用字符串的公共前缀来降低查询时间的开销以达到提高效率的目的。Trie树中每个单词都是通过character by character方法进行存储,相同前缀单词共享前缀节点.可以看到,每条路径组成一个单词.上面这颗树存了to/tea/ted/ten/inn这些词.

Trie树的基本性质可以归纳为: (1)根节点不包含字符,除根节点意外每个节点只包含一个字符。(2)从根节点到某一个节点,路径上经过的字符连接起来,为该节点对应的字符串。 (3)每个节点的所有子节点包含的字符串不相同。

详解字典树Trie结构及其Python代码实现(字典树原理)

性质(1)根节点不包含字符,除根节点外的每个节点只包含一个字符。(2)从根节点到某一个节点,路径上经过的字符连接起来,为该节点对应的字符串。(3)每个节点的所有子节点包含的字符串不相同。

基本思想(以字母树为例):1、插入过程对于一个单词,从根开始,沿着单词的各个字母所对应的树中的节点分支向下走,直到单词遍历完,将最后的节点标记为红色,表示该单词已插入Trie树。2、查询过程同样的,从根开始按照单词的字母顺序向下遍历trie树,一旦发现某个节点标记不存在或者单词遍历完成而最后的节点未标记为红色,则表示该单词不存在,若最后的节点标记为红色,表示该单词存在。

应用(1)词频统计比直接用hash节省空间(2)搜索提示输入前缀的时候提示可以构成的词(3)作为辅助结构如后缀树,AC自动机等的辅助结构

实现虽然Python没有指针,但是可以用嵌套字典来实现树结构.对于非ascii的单词,统一用unicode编码来插入与搜索.

详解duck typing鸭子类型程序设计与Python的实现示例 在程序设计中,鸭子类型(英语:ducktyping)是动态类型的一种风格。在这种风格中,一个对象有效的语义,不是由继承自特定的类或实现特定的接口,

Python的Django中将文件上传至七牛云存储的代码分享 最近在写的一个django小项目需要实现用户上传图片的功能,使用到了七牛云存储,特此记录下来。这里我使用的七牛pythonSDK版本是7.0.3,函数使用上可能

使用Python的Flask框架来搭建第一个Web应用程序 1、初始化在这章,你将学到Flask应用程序的不同部分。同时,你将编写和运行你的第一个Flaskweb应用程序。所有的Flask应用程序都必须创建一个应用程序

标签: 字典树原理

本文链接地址:https://www.jiuchutong.com/biancheng/386950.html 转载请保留说明!

上一篇:Python中利用Scipy包的SIFT方法进行图片识别的实例教程(python中scipy用法)

下一篇:详解duck typing鸭子类型程序设计与Python的实现示例(duck有鸭肉的意思吗)

  • 非税收入票据能否税前扣除
  • 少数股东损益是
  • 公司两个股东各占50%股份,法人是股东
  • 银行开户许可证图片
  • 对公的etc怎么绑定怎么充值
  • 国有独资企业交企业所得税规定
  • 国资委无偿划拨资产不上税吗
  • 盈余公积属于什么类账户
  • 结转预交增值税会计处理
  • 培训费没有发票怎么办
  • 自创商誉企业所得税可以扣除吗
  • 税控设备可以跨省销售吗
  • 分公司亏损还会分摊所得税吗
  • 后续支出均应计入当期损益
  • 印花税的滞纳金怎么计算
  • 税收筹划也要有风险意识
  • 增值税进项抵扣期限及认证期限
  • 工资薪金所得的个人所得税筹划方法
  • 股票现金分红
  • 烟花爆竹入库须知
  • 出租房子收入计入什么科目
  • 政府拨款经费会计分录
  • 抵债资产会计核算
  • 公司不运营了需要注销吗
  • php 智能家居
  • 企业发生的利得和损失应计入所有者权益
  • 试运行期间收入和成本怎么记账
  • 发票开具有误拒收后销售方如何处理?
  • vue打包成一个文件
  • 可解释深度学习:从感受野到深度学习的三大基本任务:图像分类,语义分割,目标检测,让你真正理解深度学习
  • 存货盘盈盘亏会涉及到其他应收款吗
  • 物业公司都有什么
  • 企业应收票据贴现,应按实际收到的金额计入
  • 党费返还怎么记账
  • python如何运用
  • 支付个人赔偿款要交税吗
  • 国有土地租赁合同的性质
  • 装修店面装修费的会计分录
  • 未抵扣的进项发票,开出红字信息表,需要做进项税转出吗
  • 不动产进项税额抵扣从什么时候开始
  • 利润表的编制方法和步骤累计数和好结账前余额
  • mysql导入sql文件命令
  • 办公室搬迁工作
  • 强化劳务输出
  • 公司向外借款给个人怎么做账
  • 营改增小规模纳税人可以进行税额扣除
  • 小型微利企业减按25%计算应纳税所得额
  • 接受捐赠后怎么发表感言
  • 经纪代理代订机票差额专票抵扣
  • 请演员的费用账务处理
  • 事业单位 abc类
  • 购置固定资产支出怎么算
  • 出纳需要遵循的原则
  • 中小企业做账
  • 会计交接事项有哪些
  • 使用sql server
  • Linux/Mac MySQL忘记密码命令行修改密码的方法
  • centos下载命令
  • 电脑出现黑屏英文要怎么处理
  • u盘装win8系统教程图解
  • win7系统的word文档中的工具在哪里
  • linux spool
  • windows 10预览版
  • 什么是边角料
  • win10多任务视图不排序怎么设置
  • unity shader editor
  • 遍历enumeration
  • javascript 数组操作
  • 使用nodejs中httpProxy代理时候出现404异常的解决方法
  • cocos2dx游戏开发教程
  • jQuery展示表格点击变色、全选、删除
  • 自动清除数据
  • react 系列
  • IEnumerator/ IEnumerable/ yield return/ StartCoroutine 详解
  • jquery form序列化
  • javascript总结笔记
  • android 加载大量图片
  • 国家税务总局税务局官网
  • 每辆车车船税都一样吗
  • 河南省2020年12月纳税申报截止日期
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设