Trie树讲解 + AcWing 835. Trie字符串统计

本文详细介绍了Trie树(字典树)的概念、插入和查询操作,以及它们的时间和空间复杂度。Trie树是一种用于快速检索字符串的数据结构,尤其适用于存储和查找字母或数字组成的字符串。在插入和查询过程中,Trie树能以树的高度作为主要时间复杂度,提供高效性能。此外,还给出了C++实现Trie树插入和查询的代码示例。

Trie(字典树)是一种用于实现字符串快速检索的多叉树结构。Trie 的每个节点都拥有若干个字符指针,若在插入或检索字符串时扫描到一个字符 c,就沿着当前节点的 c 字符指针,走向该指针指向的节点。

Trie树可以 高效 支持 两个操作

  • 存储字符串集合
  • 查询字符串集合

有一个 经验:凡是用到Trie树的题目,一般来说给出的字符串要么全是小写字母,要么全是大写字母,要么都是数字,要么全是01,总之字母类型不是很多。

下面来看看它是如何高效存储字符串的:

初始化

一棵空Trie仅包含一个根节点,该点的字符指针 均指向空

插入

(1)过程分析

当需要 插入一个字符串S 时,我们令一个指针Р起初指向根节点。然后,依次扫描S中的每个字符c:

  • 1.若Pc字符指针 指向一个已经存在的节点Q,则 P= Q
  • 2.若Pc字符指针 指向空,则 新建一个节点Q
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值