字典树(单词查找树、Trie)
文章目录
- 单词查找树
- 1 基本概念
- 2 字典树的应用
- 3 字典树基本操作的实现
- 4 参考资料
单词查找树
1 基本概念
百度百科对字典树的介绍为:是一种树形结构,是一种哈希树的变种。
《算法4》对字典树的介绍为:它由字符串键中的所有字符构造而成,允许使用被查找键中的字符进行查找。
不管各种材料对它的描述如何,总之它是长成下图这样的。
从图中我们可以很清楚的看到,从字典树的根节点到每个叶子节点的路径都是一个字符串。很显然,这样存储字符串会节约很多空间(例如上图中的NEWS和NOT公共前缀N只存一次就好了),而且便于查找不同字符串的公共前缀。
另外,如果我们想要存储的字符串是已经存好的字符串的子串(前缀),例如上图中我们想要再存储一个NEW。这时候我们只需要在每个节点上额外加一个标志位用来表示以当前字符结尾的字符串是不是我们要存储的字符串就好了,例如上图的-1(每个节点都应该有这样的标志位)。
2 字典树的应用
根据字典树的性质,有以下几个应用场景:
- 串的快速检索:给出N个单词组成的熟词表,以及一篇全用小写英文书写的文章,要求按最早出现的顺序写出所有不在熟词表中的生词。
- “串”排序:给定N个互不相同的仅由一个单词构成的英文名,将他们按字典序从小到大输出。用字典树进行排序,采用数组的方式创建字典树,这棵树的每个结点的所有儿子很显然地按照其字母大小排序。对这棵树进行先序遍历即可。
- 最长公共前缀:对所有串建立字典树,对于两个串的最长公共前缀的长度即他们所在的结点的公共祖先个数,于是,问题就转化为当时公共祖先问题。
3 字典树基本操作的实现
字典树基本操作的简单实现可以通过这道Leetcode 208题来完成。
4 参考资料
- 百度百科字典树
- 《算法4》P474 单词查找树
字典树(单词查找树、Trie)相关推荐
- 算法(第4版) Chapter 5.2 单词查找树
Algorithms Fourth Edition Written By Robert Sedgewick & Kevin Wayne Translated By 谢路云 Chapter 5 ...
- 前缀树(字典树,单词查找树,Trie树)
参考网址:https://blog.csdn.net/u013949069/article/details/78056102?utm_source=copy 概述 前缀树又名字典树,单词查找树,Tri ...
- java工具:字典树(单词查找树/Trie树)的实现以及使用
项目地址 https://github.com/kylin-hunter/k-dic 文章目录 项目地址 前言 一.字典树 二.使用步骤 1 引入库 1.1 编译并发布到本地 1.2 gradle ( ...
- 字典树(单词查找树)详解
文章目录 前言 什么是字典树 性质 代码详解 属性 & 构造器 insert 插入 searchPrefix 搜索前缀 完整代码: 前言 当你在搜索条输入字符时,搜索引擎会根据你所输入的字符进 ...
- 单词查找树(信息学奥赛一本通-T1337)
[题目描述] 在进行文法分析的时候,通常需要检测一个单词是否在我们的单词列表里.为了提高查找和定位的速度,通常都画出与单词列表所对应的单词查找树,其特点如下: 1.根结点不包含字母,除根结点外每一个结 ...
- 字典树(查找树)入门
字典树 树状结构保存字符串,查找快,判断前缀快. 又称单词查找树,Trie树,是一种树形结构,是一种哈希树的变种. 例题: link. 代码(指针) #include <iostream> ...
- codevs 1729 单词查找树
二次联通门 : codevs 1729 单词查找树 /*codevs 1729 单词查找树Trie树统计节点个数建一棵Trie树插入单词时每新开一个节点就计数器加1*/ #include <cs ...
- 1337:【例3-2】单词查找树
时间限制: 1000 ms 内存限制: 65536 KB 提交数: 1732 通过数: 910 [题目描述] 在进行文法分析的时候,通常需要检测一个单词是否在我们的单词列表里.为了提高查找和定位的速度 ...
- java单词查找树_Trie 单词查找树 java实现(来自算法第4版)
强烈建议看书上的实现步骤,这里只是一个个人记录. 单词查找树的性能: 查找命中所需的时间与被查找的键的长度成正比.比如单词有7个字符,查找或插入操作最多只需要检查8个节点. 查找未命中只需检查若干个字 ...
最新文章
- 基于ArcSDE的影像数据管理-疑惑篇 (转载)
- python最佳实践笔记
- java 简单数据类型_java基本数据类型
- ASP.NET Core 2.2 项目升级至 3.0 备忘录
- Ref_cursor
- 实用网站推荐——office模板(PPT)
- 远程桌面连接,运维工程师-必备软件【MultiDesk】
- 免费沙龙:PRINCE2项目管理认证价值与应用
- 使用华为modelarts进行车辆识别
- Android中EditText去掉下划线的方法
- 十大管理之项目进度管理知识点
- 推荐几个常用的Python扩展工具包
- 学妹:新手小白如何进行网络抓包?
- 不知道华为手机识别图片文字怎么弄?2个识别方法收好了
- python的十句名言_洗脑最厉害的10句名言名句
- 马桶的尺寸是多少 马桶尺寸是多大2022
- ASP.NET Core 解决控制台输出日志内容前面[40m等乱码字符
- E/WindowManager: android.view.WindowLeaked: Activity com.xxx.xxx.xxx
- php 公众号打开小程序,微信公众号图文消息新增两种进入小程序的方式
- ethernet/IP 协议简介 pdf