文章目录

  • 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树:如何实现搜索引擎的搜索关键词提示功能相关推荐

  1. Trie 树:如何实现搜索引擎的搜索关键词提示功能

    ------ 本文是学习算法的笔记,<数据结构与算法之美>,极客时间的课程 ------ 搜索引擎的搜索关键词提示功能,你应该不陌生吧!当你在搜索引擎的搜索框上,输入要搜索的文字的某一部分 ...

  2. Trie 树——搜索关键词提示

    当你在搜索引擎中输入想要搜索的一部分内容时,搜索引擎就会自动弹出下拉框,里面是各种关键词提示,这个功能是怎么实现的呢?其实底层最基本的就是 Trie 树这种数据结构. 1. 什么是 "Tri ...

  3. Trie 树——搜索关键词提示 1

    当你在搜索引擎中输入想要搜索的一部分内容时,搜索引擎就会自动弹出下拉框,里面是各种关键词提示,这个功能是怎么实现的呢?其实底层最基本的就是 Trie 树这种数据结构. 1. 什么是 "Tri ...

  4. python字典实现关键字检索_如何实现搜索框的关键词提示功能

    我们都使用过主流的搜索引擎,谷歌. bing,当然还有搜狗.百度之类.当你搜索某一关键词时,它会贴心在下拉框补全一些热门关键词,像下图这样: 搜索关键词提示 你点击某一关键词,页面就直接跳转到结果页面 ...

  5. android搜索框功能实现_巧用 Trie 树,实现搜索引擎关键词提示功能

    来源 | 码海责编 | Carol封图 | CSDN 付费下载于视觉中国我们几乎每天都在用搜索引擎搜索信息,相信大家肯定有注意过这样一个细节:当输入某个字符的时候,搜索引框底下会出现多个推荐词,如下, ...

  6. Trie(字典树) : 如何实现搜索引擎的关键词提示功能?

    文章目录 搜索中的关键词提示 Trie树的介绍 Trie树的实现 搜索的关键词提示 Trie树 VS 红黑树.哈希 搜索中的关键词提示 当我们在搜索引擎中进行搜索时,有时仅仅输入了搜索内容的一部分,搜 ...

  7. 巧用 Trie 树,实现搜索引擎关键词提示功能

    来源 | 码海 责编 | Carol 封图 | CSDN 付费下载于视觉中国 我们几乎每天都在用搜索引擎搜索信息,相信大家肯定有注意过这样一个细节:当输入某个字符的时候,搜索引框底下会出现多个推荐词, ...

  8. 站长工具|百度搜索框提示功能

    百度向站长开放免费"百度搜索框"代码和"百度搜索框提示"代码.只需进行简单的设置, 即可将" 百度搜索框( 带提示功能)"功能快速加入到您的 ...

  9. ajax实现搜索提示源码,Jquery实现搜索框提示功能示例代码

    博客的前某一篇文章中http://www.jb51.net/article/35175.htm写过一个用Ajax来实现一个文本框输入的提示功能.最近在一个管理项目的项目中,使用后发现,真的反应很慢,数 ...

最新文章

  1. (一)python简单应用
  2. Tomcat中配置多个端口
  3. Mysql 乱码的解决
  4. 职责链模式应用——下机(机房重构知识点总结)
  5. 133_Power BI 报表服务器2020年1月版本更新亮点
  6. MATLAB App Designer GUI开发从0到1(二)
  7. kafka reset offset 手工重置offset
  8. Java基础教程:注解
  9. Xv6 Page Table
  10. 高德地图:No implementation found for void com.autonavi.ae.gmap.GLMapEngine.nativeInitParam
  11. 药店管理系统/APP/小程序/网站
  12. python一次性导入依赖包_python如何导入依赖包
  13. BBU和RRU具体区别是 什么?
  14. 异常检测论文阅读《Anomaly Detection in Video Sequences: A Benchmark and Computational Model》
  15. IxChariot测试网络设备性能
  16. 如何安全快速的迁移你的系统到固态硬盘
  17. oracle sum小数位,数据库sum 有多位小数点
  18. python学多久可以考二级建造师吗_没有基础。学多久能过二级建造师
  19. 邮件营销群发6大技巧!怎么群发邮件效果好?
  20. 杭电考研计算机专业课_2019杭电计算机考研初试科目、参考书目、报录比汇总...

热门文章

  1. Python导入模块报错问题的分析
  2. 【SSM】nested exception is org.apache.ibatis.binding.BindingException: Invalid boun原因总结
  3. MCE | 病毒疫苗知多少
  4. BZOJ3631松鼠的新家
  5. java计算机毕业设计果之芒农场销售系统(附源码、数据库)
  6. Android沉浸式状态栏(包含 小米、魅族)
  7. 阿里开源库vLayout的使用
  8. MySql存储过程基础语法摘要
  9. 如何缩小图片大小kb,6个方法助你快速处理
  10. 【Android】知识点汇总,坚持原创ing