Suffix Tree 后缀树

简介:后缀树(also called PAT tree or, in an earlier form, position tree)是一种高级数据结构,能够快速解决很多字符串的问题,相应的也有后缀数组blabla。后缀树提出的目的是用来支持有效的字符串匹配和查询。

定义:一个长度为n的字符串S,他的后缀树定义如下:

1.从根到叶的路径与S的后缀一一对应

2.每条边都是一个非空字符串。

3.所有的内部节点(除了root节点)都有至少两个child节点。

由于并非所有的字符串都存在一颗这样的树,因此S通常用一个终止符号进行填充如$;这保证了没有一个后缀是另外一个的前缀。

实例:字符串banana$的后缀树的产生

step1:

suffix(1) = banana$

suffix(2) = anana$

suffix(3) = nana$

suffix(4) = ana$

suffix(5) = na$

suffix(6) = a$

suffix(7) = $

step2:

按照字典序排序

suffix(6) = a$

suffix(4) = ana$

suffix(2) = anana$

suffix(1) = banana$

suffix(5) = na$

suffix(3) = nana$

suffix(7) = $

step3:                                          

                     |-- $

         |--  a --|           |-- $

root--|           |-- na--|

         |-- banana$      |-- na$

         |          |-- $

         |-- na--|

                    |-- NA$

生成suffix tree结束。

posted @ 2011-12-26 20:29  RichardHu  阅读(257)  评论(0编辑  收藏  举报