练习:Trie树(公共前缀)

本文介绍了Trie树,一种用于快速检索的多叉树结构,利用字符串公共前缀节省空间。内容包括Trie树的应用、排序功能以及作为其他数据结构基础的角色。通过hihoCoder上的编程练习,展示了如何用Trie树解决查询字典中以给定字符串为前缀的单词个数问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Trie树,又称字典树,单词查找树或者前缀树,是一种用于快速检索的多叉树结构。

它的精髓在于利用字符串的公共前缀来节约存储空间。从根节点到某一个节点,路径上经过的字符连接起来,为该节点对应的字符串。(举例如下图)


Trie树的应用很多,主要是以下几个方面:

(1)正如“前缀树”的定义一样,Trie树可以方便地检索字符串,查找字符串的公共前缀等。更为重要的是,建立Trie树的过程,其实也是查询的过程。

(2)排序。只要先序遍历整棵树,输出相应的字符串便是按字典序排序的结果。

(3)其他数据结构和算法的基础:如AC自动机、后缀树等。


下面通过hihoCoder上的一个例子,编程练习。

给定一个含有n(n≤100000)个单词的字典,每个单词由不超过10个的小写英文字母组成(可能存在相同的单词,此时应将其视作不同的单词)。

接下来有m(m≤100000)次询问,每次询问要求回答字典中以给定字符串为前缀的单词的个数

【样例输入】

5
babaab
babbbaaaa
abba
aaaaabaa

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值