如上图,类似Google,百度这样的搜索引擎的关键字提示功能,你知道是怎么实现的吗?
虽然它们可能实现的比较复杂,考虑到情况比较多,但是归根结底就是一种数据结构Trie树,又称字典树。
首先我们先大体认识一下,知道它是一棵树。如下图:
现在当然看不出什么东西,最直观的感觉就是一棵多叉树而已,那么上面那棵树是如何形成的了?
这是输入hello hi her how see so这些单词构成的一棵字典树。我们发现从第二层的根节点出发,到每一个叶子节点的路径上面的字母的和就是一个单词!!!(顶层根节点不考虑)
如下是详细过程,
是不是非常简单,没错,字典树就是这么简单,当我们加入某个单词的时候,我们从第一个字母从字典树的根节点出发,查询下一层是否存在这个字母,如果存在那么就沿着这个节点往下走,并且处理下个字母,如果不存在,那么我们就添加一个新的节点(value为当前字母)并且沿着新节点继续处理下一个字母。
那么字典树有什么作用了?字典树对于查询前缀相同的字符串十分高效。
譬如我们查询前缀为h的字符串时,从h到每个叶子节点就是一个单词。这正好应用到搜索引擎的提示功能。
光说不练假把式。我们把问题简化,假设我们输入的都是小写英文字母,那么每一个节点就会储存俩个东西。
1:当前节点的value(保存字母)