Advertisement

数据结构及其结合后缀树

阅读量:

一、概念解析:

1、后缀树的构建逻辑与实例演示:

为了深入理解后缀树的结构,我们以字符串 "prop" 为例进行剖析。
从最基础的暴力构建视角来看,构建过程可以拆解为三个核心步骤。
首先,我们需要枚举出该字符串的所有后缀。具体而言:
B[0] 对应空串 “”;
B[1] 对应 “p”,这是按字典序排列后的第四个后缀;
B[2] 对应 “op”,这是第三个后缀;
B[3] 对应 “rop”,这是第二个后缀;
B[4] 对应 “prop”,这是第一个后缀。
这五个字符串构成了该字符串完整的后缀集合。
其次,基于这五个后缀,我们构建一棵标准的 Trie 树(前缀树)。此时,树中的每个节点代表一个字符,路径代表后缀的前缀。
最后,也是最关键的一步,是对 Trie 树进行压缩。压缩规则遵循以下原则:
若某段树枝既没有分支点(即没有子节点分叉),也没有任何后缀在此处结束,则该段路径必须压缩为一个单一的节点;
若某段树枝没有分支,但恰好有一条后缀在其中某处结束,我们需要先在该结束位置创建一个空节点(或标记节点),然后将剩余的路径部分压缩为一个点。
这种压缩机制确保了后缀的完整性不会被合并掉,最终形成的结构即为后缀树。其形态如下所示:

eg: 利用字符串prop建立后缀树。
暴力地说,可以三步建树。
第一步,得到prop的所有后缀:
B[0]

全部评论 (0)

还没有任何评论哟~