35.Trie树:如何实现搜索引擎的搜索关键词提示功能
文章目录
- 1. 什么是“Trie树”?
- 2. 如何实现一棵Trie树?
- 3.Trie树真的很耗内存吗?
- 4.Trie树与散列表、红黑树的比较
- 5. 解答开篇
问题:搜索引擎的关键词的联想词是如何实现的?
1. 什么是“Trie树”?
Trie树,也叫“字典树”。Trie树的本质,就是利用字符串之间的公共前缀,将重复的前缀合并在一起。
有6个字符串,它们分别是:how,hi,her,hello,so,see。构造成如下图形:
2. 如何实现一棵Trie树?
Trie树是多叉树。代码表示:
class TrieNode {char data;TrieNode[] children;
}
时间复杂度:构建时间复杂度是O(n)(n表示所有字符串的长度和),查收是O(k), k是字符串长度。
3.Trie树真的很耗内存吗?
比较耗内存。
4.Trie树与散列表、红黑树的比较
Trie树有极其严苛的要求:
- 字符串中包含的字符集不能太大。如果字符集太大,那存储空间可能就会浪费很多。即便可以优化,但也要付出牺牲查询、插入效率的代价。
- 要求字符串的前缀重合比较多,不然空间消耗会变大很多。
- 如果要用Trie树解决问题,那我们就要自己从零开始实现一个Trie树,还要保证没有bug,这个在工程上是将简单问题复杂化,除非必须,一般不建议这样做。
- 我们知道,通过指针串起来的数据块是不连续的,而Trie树中用到了指针,所以,对缓存并不友好,性能上会打个折扣。
一般从字符串中查询字符串,用哈希表或红黑树。Trie树不适合精确匹配
5. 解答开篇
以he为前缀的hello、her展示在搜索提示框内,搜索引擎最基本原理。
35.Trie树:如何实现搜索引擎的搜索关键词提示功能相关推荐
- Trie 树:如何实现搜索引擎的搜索关键词提示功能
------ 本文是学习算法的笔记,<数据结构与算法之美>,极客时间的课程 ------ 搜索引擎的搜索关键词提示功能,你应该不陌生吧!当你在搜索引擎的搜索框上,输入要搜索的文字的某一部分 ...
- Trie 树——搜索关键词提示
当你在搜索引擎中输入想要搜索的一部分内容时,搜索引擎就会自动弹出下拉框,里面是各种关键词提示,这个功能是怎么实现的呢?其实底层最基本的就是 Trie 树这种数据结构. 1. 什么是 "Tri ...
- Trie 树——搜索关键词提示 1
当你在搜索引擎中输入想要搜索的一部分内容时,搜索引擎就会自动弹出下拉框,里面是各种关键词提示,这个功能是怎么实现的呢?其实底层最基本的就是 Trie 树这种数据结构. 1. 什么是 "Tri ...
- python字典实现关键字检索_如何实现搜索框的关键词提示功能
我们都使用过主流的搜索引擎,谷歌. bing,当然还有搜狗.百度之类.当你搜索某一关键词时,它会贴心在下拉框补全一些热门关键词,像下图这样: 搜索关键词提示 你点击某一关键词,页面就直接跳转到结果页面 ...
- android搜索框功能实现_巧用 Trie 树,实现搜索引擎关键词提示功能
来源 | 码海责编 | Carol封图 | CSDN 付费下载于视觉中国我们几乎每天都在用搜索引擎搜索信息,相信大家肯定有注意过这样一个细节:当输入某个字符的时候,搜索引框底下会出现多个推荐词,如下, ...
- Trie(字典树) : 如何实现搜索引擎的关键词提示功能?
文章目录 搜索中的关键词提示 Trie树的介绍 Trie树的实现 搜索的关键词提示 Trie树 VS 红黑树.哈希 搜索中的关键词提示 当我们在搜索引擎中进行搜索时,有时仅仅输入了搜索内容的一部分,搜 ...
- 巧用 Trie 树,实现搜索引擎关键词提示功能
来源 | 码海 责编 | Carol 封图 | CSDN 付费下载于视觉中国 我们几乎每天都在用搜索引擎搜索信息,相信大家肯定有注意过这样一个细节:当输入某个字符的时候,搜索引框底下会出现多个推荐词, ...
- 站长工具|百度搜索框提示功能
百度向站长开放免费"百度搜索框"代码和"百度搜索框提示"代码.只需进行简单的设置, 即可将" 百度搜索框( 带提示功能)"功能快速加入到您的 ...
- ajax实现搜索提示源码,Jquery实现搜索框提示功能示例代码
博客的前某一篇文章中http://www.jb51.net/article/35175.htm写过一个用Ajax来实现一个文本框输入的提示功能.最近在一个管理项目的项目中,使用后发现,真的反应很慢,数 ...
最新文章
- (一)python简单应用
- Tomcat中配置多个端口
- Mysql 乱码的解决
- 职责链模式应用——下机(机房重构知识点总结)
- 133_Power BI 报表服务器2020年1月版本更新亮点
- MATLAB App Designer GUI开发从0到1(二)
- kafka reset offset 手工重置offset
- Java基础教程:注解
- Xv6 Page Table
- 高德地图:No implementation found for void com.autonavi.ae.gmap.GLMapEngine.nativeInitParam
- 药店管理系统/APP/小程序/网站
- python一次性导入依赖包_python如何导入依赖包
- BBU和RRU具体区别是 什么?
- 异常检测论文阅读《Anomaly Detection in Video Sequences: A Benchmark and Computational Model》
- IxChariot测试网络设备性能
- 如何安全快速的迁移你的系统到固态硬盘
- oracle sum小数位,数据库sum 有多位小数点
- python学多久可以考二级建造师吗_没有基础。学多久能过二级建造师
- 邮件营销群发6大技巧!怎么群发邮件效果好?
- 杭电考研计算机专业课_2019杭电计算机考研初试科目、参考书目、报录比汇总...
热门文章
- Python导入模块报错问题的分析
- 【SSM】nested exception is org.apache.ibatis.binding.BindingException: Invalid boun原因总结
- MCE | 病毒疫苗知多少
- BZOJ3631松鼠的新家
- java计算机毕业设计果之芒农场销售系统(附源码、数据库)
- Android沉浸式状态栏(包含 小米、魅族)
- 阿里开源库vLayout的使用
- MySql存储过程基础语法摘要
- 如何缩小图片大小kb,6个方法助你快速处理
- 【Android】知识点汇总,坚持原创ing