【数据结构与算法】【字符串匹配】Trie树

本文介绍了Trie树(字典树),一种用于字符串匹配的数据结构,利用字符串公共前缀合并节点,提高查找效率。文章讨论了Trie树的构建、存储方式、时间复杂度以及内存消耗,并提出优化方案,如有序数组和缩点优化。同时,对比了Trie树与散列表、红黑树在字符串匹配问题上的优劣,指出Trie树更适合前缀匹配和自动补全场景。
摘要由CSDN通过智能技术生成
  1. 单模式串匹配
    BF 算法和 RK 算法
    BM 算法和 KMP 算法
  2. 多模式串匹配算法
    Trie 树和 AC 自动机

一、 什么是“Trie树”?

1. 他是一种树形结构,是一种专门处理字符串匹配的数据结构,解决在一组字符串集合中快速查找某个字符串的问题。
2. Trie树的本质是利用字符串之间公共前缀,将重复的前缀合并在一起

Trie 树的本质,就是利用字符串之间的公共前缀,将重复的前缀合并在一起。

how,hi,her,hello,so,see
在这里插入图片描述

其中,根节点不包含任何信息,每个节点表示一个字符串中的字符,从根节点到红色节点的一条路径表示一个字符串(红色节点并不都是叶子节点)。

3. 查找

当在Trie树中查找一个字符串时,如“her”,就将要查找的字符串分割成单个的字符h,e,r,然后从Trie树的根节点开始匹配。但,假若要查找的字符串是“he”,用上面同样的方法,从根节点开始,沿着某条路径来匹配,发现路径的最后一个节点“e”不是红色的,即“he”是某个字符串的前缀,但不能完全匹配任何字符串。

二 、如何实现一课Trie树?

1,Trie树主要有两个操作,一个是将字符串集合构造成Trie树。这个程可分解为:
  • 将一个字符串插入到Trie树的过程
  • 在Trie树中查询一个字符串
2,如何存储一个Trie树

①:Trie树是一个多叉树,需要存储一个节点的所有子节点的指针。
②:一种经典的存储方式:借助散列表额思想,通过一个下标与字符一一映射的数组,来存储子节点的指针。

class TrieNode {
   
  char data;
  TrieNode children[26];
}

借助散列表的思想,我们通过一个下标与字符一一映射的数组,来存储子节点的指针。
在这里插入图片描述
假设字符串中只有从a到z这26个小写字母,从数组中下标为0的位置,存储指向子节点a的指针,下标为1的位置存储指向子节点b的指针,以此类推,下标为25的位置,储存的是指向的子节点z的指针。如果某个字符的子节点不存在,就在对应的下标的位置存储null。
当在Trie树中查找字符串的时候,就可以通过字符的ASCII码减去“a”的ASCII码,迅速找到匹配的子节点的指针。


public class 
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值