Trie树,又称字典树,单词查找树或者前缀树,是一种用于快速检索的多叉树结构。
它的精髓在于利用字符串的公共前缀来节约存储空间。从根节点到某一个节点,路径上经过的字符连接起来,为该节点对应的字符串。(举例如下图)
Trie树的应用很多,主要是以下几个方面:
(1)正如“前缀树”的定义一样,Trie树可以方便地检索字符串,查找字符串的公共前缀等。更为重要的是,建立Trie树的过程,其实也是查询的过程。
(2)排序。只要先序遍历整棵树,输出相应的字符串便是按字典序排序的结果。
(3)其他数据结构和算法的基础:如AC自动机、后缀树等。
下面通过hihoCoder上的一个例子,编程练习。
给定一个含有n(n≤100000)个单词的字典,每个单词由不超过10个的小写英文字母组成(可能存在相同的单词,此时应将其视作不同的单词)。
接下来有m(m≤100000)次询问,每次询问要求回答字典中以给定字符串为前缀的单词的个数
【样例输入】
5
babaab
babbbaaaa
abba
aaaaabaa