C++ Trie树算法

本文详细介绍了C++实现的Trie树算法,包括Trie树的概念、操作(初始化、插入、检索)以及其优缺点。还推荐了两道与Trie树相关的洛谷例题,分别是[TJOI2010]阅读理解和最长异或路径问题。
摘要由CSDN通过智能技术生成

目录:

 

什么是Trie树

Trie树的各种操作

1、初始化

2、插入

3、检索

Trie树的缺点

例题推荐


什么是Trie树:

        又称单词查找树字典树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:利用字符串的公共前缀来减少查询时间,最大限度地减少无谓的字符串比较,查询效率比哈希树高。

        至于Trie树长什么样子呢?

通过图片不难看出: 

        1、字典树用边表示字母

        2、有相同前缀的单词公用前缀节点,那我们可以的得出每个节点最多有26个子节点(在单词只包含小写字母的情况下)

        3、整棵树的根节点是空的。

        4、每个单词结束的时候用一个特殊字符表示,图中用的‘′,那么从根节点到任意一个‘′,那么从根节点到任意一个‘’所经过的边的所有字母表示一个单词。

Trie树的各种操作:

1、初始化:

        一颗空的 Trie 树仅包含一个根节点,该节点的字符指针为空。

2、插入:

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

        (1)若 P 的 c 字符指针指向一个已经存在的节点 Q ,则令 P = Q 。

        (2)若 P 的 c 字符指针指向空,则新建一个节点 Q ,令 P 的 c 字符指针指向 Q ,

  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值