这是我根据一本书上的算法 求的"abaabaac"的后缀树的结果 0分开的表示建树的每一步
0
ab [0 7]
b [1 7]
0
aba [0 7]
ba [1 7]
0
a 1 0 [0 0]
a [3 7]
baa [1 7]
baa [1 7]
0
a 1 0 [0 0]
ab [3 7]
baab [1 7]
baab [1 7]
0
a 1 0 [0 0]
aba [3 7]
baaba [1 7]
baaba [1 7]
0
a 1 0 [0 0]
abaa [3 7]
baabaa [1 7]
baabaa [1 7]
0
a 1 0 [0 0]
a 4 1 [3 3]
baac [4 7]
c [7 7]
baa 2 3 [1 3]
baac [4 7]
c [7 7]
c [7 7]
baa 3 4 [1 3]
baac [4 7]
c [7 7]
c [7 7]
现在我感到头痛的是不明白 何时后分裂出新的节点
比如第三步分裂出新的a边 第六步有不分裂出a了
源程序里
testAndSplit方法里面 有句
if (T.charAt(i) == T.charAt(lt+Rt-Lt+1)) { // if T(lt..rt) is
endPoint = true; // and extension of
return p; // T(Lt..i);
}
很难明白
有清楚的高手 说说算法思想 源代码传上了
[此贴子已经被作者于2007-8-1 13:11:12编辑过]