Trie字典树(1)—— 字典树查询
1 Trie 介绍
1.1 字典
- 如果有 n 个条目,使用树结构,查询的时间复杂度是 O(logn);
- 如果有100 万个条目(2^20),logn 大约数20
1.2 Trie
- 查询每个条目的时间复杂度和字典中的条目总数无关;
- 时间复杂度是 O(w),w 是查询单词的长度;
1.3 Trie 的查询
Trie.java
package tree;import java.util.TreeMap;public class Trie {private class Node {public boolean isWord;public TreeMap<Character, Node> next;public Node(boolean isWord) {this.isWord = isWord;next = new TreeMap<>();}public Node() {this(false);}}private Node root;private int size;public Trie() {root = new Node();size = 0;}public int getSize() {return size;}public void add(String word) {Node cur = root;for (int i = 0; i < word.length(); i++) {char c = word.charAt(i);if (cur.next.get(c) == null) {cur.next.put(c, new Node());}cur = cur.next.get(c);}if (!cur.isWord) {cur.isWord = true;size++;}}public boolean contains(String word) {Node cur = root;for (int i = 0; i < word.length(); i++) {char c = word.charAt(i);if (cur.next.get(c) == null) {return false;}cur = cur.next.get(c);}return cur.isWord;}}
1.4 Trie 前缀搜索
// 查询是否在 Trie 中有单词以 prefix 为前缀public boolean isPrefix(String prefix) {Node cur = root;for (int i = 0; i < prefix.length(); i++) {char c = prefix.charAt(i);if (cur.next.get(c) == null) {return false;}cur = cur.next.get(c);}return true;}
Trie字典树(1)—— 字典树查询相关推荐
- Trie树(字典树)详细知识点及其应用
Trie,又经常叫前缀树,字典树等等.它有很多变种,如后缀树,Radix Tree/Trie,PATRICIA tree,以及bitwise版本的crit-bit tree.当然很多名字的意义其实有交 ...
- 前缀树(字典树,单词查找树,Trie树)
参考网址:https://blog.csdn.net/u013949069/article/details/78056102?utm_source=copy 概述 前缀树又名字典树,单词查找树,Tri ...
- 分门别类刷leetcode——高级数据结构(字典树,前缀树,trie树,并查集,线段树)
目录 Trie树(字典树.前缀树)的基础知识 字典树的节点表示 字典树构造的例子 字典树的前序遍历 获取字典树中全部单词 字典树的整体功能 字典树的插入操作 字典树的搜索操作 字典树的前缀查询 字典树 ...
- 实现字典树(前缀树、Trie树)并详解其应用
今天看到一个比较好的数据结构,字典树,做一下记录,以供自己后期复习和读者朋友的参考. 1.定义 字典树又称单词查找树.前缀树.Trie树等,是一种树形结构,是一种哈希树的变种.典型应用是用于统计,排序 ...
- 【转】从Trie树(字典树)谈到后缀树
本文第一部分,咱们就来了解这个Trie树,然后自然而然过渡到第二部分.后缀树,接着进入第三部分.详细阐述后缀树的构造方法-Ukkonen. 第一部分.Trie树 1.1.什么是Trie树 Trie树, ...
- 从Trie树(字典树)和后缀树
从Trie树(字典树)谈到后缀树 转载:http://blog.csdn.net/v_july_v/article/details/6897097#t22 感谢作者,侵删. 引言 常关注本blog的读 ...
- trie(字典树、前缀树)
trie(字典树.前缀树) 1. trie原理 原理 trie树,又被称为字典树.前缀树,是一种高效地存储和查找字符串集合的数据结构. 一般来说,用到trie的题目中的字母要么全是小写字母,要么全是大 ...
- c语言 trie树,C语言实现Trie树(字典树)的插入查找删除与遍历操作
Trie树,也称作是字典树,是一种哈希树的变种,查询效率较高.Trie树可以用于统计或者排序大量的字符串,比如对一系列字符串按照字典序排序. 字典树是一个多叉树,每一个节点上存储的不是一个字符串,而是 ...
- 0x16.基本数据结构 — Trie树(字典树)+ A C 自 动 机
目录 用TrieTrieTrie树来处理整数异或问题是真的舒服! 一.TrieTrieTrie树 TrieTrieTrie的基本操作 0.初始化 1.插入 2.检索 二.TrieTrieTrie树例题 ...
- 字典树(前缀树)-Java实现
字典树 字典树是一种树形结构,优点是利用字符串的公共前缀来节约存储空间.在这提供一个自己写的Java实现,非常简洁. 根节点没有字符路径.除根节点外,每一个节点都被一个字符路径找到. 从根节点到某一节 ...
最新文章
- 4g内存只有1.6g可用_32位系统可用内存小 遇到32位系统内存小的解决方法
- laravel 5.5 整合 jwt 报错Method Tymon\JWTAuth\Commands\JWTGenerateCommand::handle() does not exist解决...
- COM本质论学习笔记(一)IDL
- 没有语言基础可以学python_没有Python语言基础可以学习深度学习吗?
- JS如何控制checkbox的全选反选
- ajax成功之后在执行,ajax传入成功后执行后台方法
- sriov查看pf-vf对应关系
- memcached搭建缓存系统
- oracle 手动执行作业,ORACLE 作业操作
- mysql definer super_技术分享 | 改写 mysqldump 解决 DEFINER 问题
- 高数教材班复习Hint(3.1-3.6)
- Python爬取视频之爱情电影及解密TS文件和两种合并ts的方法
- 跟着我学习 AI丨语音识别:将语音转为数字信号
- 怎么从网上办大流量卡呢?具体步骤小编都给你写好的!
- 【论文阅读】ICLR 2022: Scene Transformer: A unified architecture for predicting future trajectories of ...
- Android 平台的Python——CLE方案实现(三)
- 发育网络(DN): 一个涌现的图灵机
- 新的里程碑,海洋元宇宙AQUANEE即将登陆Gate以及BitMart
- 2019百度地图离线地图制作
- 找朋友(斗地主)判断逻辑