Trie树

本文介绍了Trie树的基本概念及其在搜索提示中的应用。通过实例展示了如何建立Trie树,并讨论了插入和查询操作的时间复杂度。还提出了一个数据结构设计任务,支持插入和查询字符串,并给出了接口说明。

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

Trie树

标签(空格分隔): 数据结构 算法知识文档 Trie树


应用:

  1. trie树常用于搜索提示。如当输入一个网址,可以自动搜索出可能的选择。当没有完全匹配的搜索结果,可以返回前缀最相似的可能。
  2. 给你一个字典,构建一个字典的Trie树,然后每次询问给出字符串s,查询字典中以s作为前缀的单词个数.
  3. 插入一个字符串,就是建树的过程,查询一个字符串是否存在.

解决应用二:

Trie树的建立:

比如我们给了三个单词app, apple, add,我们按照以下规则创建了一颗Trie树.对于从树的根结点走到黑色结点的路径上的字母依次组合起来就是一个完整的单词.
初始建树

当我们需要加入一个新的单词appart的时候,根据上面的规则,我们建立了下面的树.
加入新的单词

如何使用Trie树:

如何使用Trie树

如图,我们标记出了三号结点为绿色.从树的根结点走到三号节点经过的路径上的字母组成的单词是”ap”,如果我们想知道字典中以”ap”作为前缀的单词的个数.那么值需要统计以三号结点作为根结点的结点中黑色结点的个数.而且再建立字典Trie树的时候我们就可以进行记录.

记录方法:
L[T] L [ T ] 从根结点到编号是 T T 的结点过程中经过边表示字母组成的单词作为前缀的在字典中的单词数目.设置 L [ T ] 的初始值是0.每当加入一个单词,如果达到了结点 T T ,就把 L [ T ] 加1.这样查询以 s s 作为前缀的字典中的单词个数的时候时间复杂度就是 O ( l e n ( s ) ) 了.

时间复杂度分析:

假设建立了有

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值