后缀树(suffix tree)

参考:

从前缀树谈到后缀树

后缀树

Suffix Tree—后缀树

字典树(trie树)、后缀树

一.前缀树

简述:又名单词查找树,tries树,一种多路树形结构,常用来操作字符串(但不限于字符串),和hash效率有一拼(二者效率高低是相对的,后面比较)。

性质:不同字符串的相同前缀只保存一份。

操作:查找,插入,删除。

举个例子:

假设有这么几个单词

                      (1)

把它存入一棵前缀树后

                         (2)

二.后缀树

简介:后缀树,就是把一串字符的所有后缀保存并且压缩的字典树。相对于字典树来说,后缀树并不是针对大量字符串的,而是针对一个或几个字符串来解决问题,

比如字符串的回文子串,两个字符串的最长公共子串等等,后面应用会说。

性质:一个字符串构造了一棵树,树中保存了该字符串所有的后缀。

操作:就是建立和应用。

1.建立后缀树

比如单词banana,它的所有后缀显示到下面的。1代表从第一个字符为起点,终点不用说都是字符串的末尾。

以上面的后缀,我们建立一颗后缀树。如下图,为了方便看到后缀,我没有合并相同的前缀

                                            (3)

前面简介的时候我们说了,后缀树是把一个字符串所有后缀压缩并保存的字典树。

压缩一会再说,简介里面说了是字典树,所以我们把字符串的所有后缀还是按照字典树的规则建立,就成了上图(3)的样子。

注意还是和字典树一样,根节点必须为空。

下面说下更加节省空间的方案,也就是上面提到的压缩。

                                                                (4)

因为有些后缀串可能是单串,并不和其他的共用同一个前缀。

比如图(4)的banana这个后缀串,直接可以用1来表示起点,终点是默认的。

图(4)的a节点后面有两个节点标记3和5是右边字符数组的下标,对应着a->3-7,a->5-7。因为a是共有的前缀。

posted @   Life·Intelligence  阅读(672)  评论(0编辑  收藏  举报
(评论功能已被禁用)
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
TOP
点击右上角即可分享
微信分享提示