就像之前所说的,你的树是不正确的。
这就是通过我的代码运行“ABCDE$XABCZ”时得到的结果。
后缀树代码:
String = ABCDE$XABCZ$
End of word character 1 = $
└── (0)
├── (20) $
├── (22) ABC
│ ├── (15) DE$
│ └── (23) Z$
├── (24) BC
│ ├── (16) DE$
│ └── (25) Z$
├── (26) C
│ ├── (17) DE$
│ └── (27) Z$
├── (18) DE$
├── (19) E$
├── (21) XABCZ$
└── (28) Z$
在(紧凑)后缀树中,您需要从所有字符串中找到具有叶节点的最深内部节点。如果在同一深度有多个节点,则必须比较该节点表示的字符串的长度。即ABC、BC、C都有相同的深度,所以要比较ABC、BC、C字符串的长度,看哪个更长;这显然是ABC。
后缀特里代码:
└── null
├── A
│ └── B
│ └── C
│ ├── D
│ │ └── (E) ABCDE
│ └── (Z) ABCZ
├── B
│ └── C
│ ├── D
│ │ └── (E) BCDE
│ └── (Z) BCZ
├── C
│ ├── D
│ │ └── (E) CDE
│ └── (Z) CZ
├── D
│ └── (E) DE
├── (E) E
├── X
│ └── A
│ └── B
│ └── C
│ └── (Z) XABCZ
└── (Z) Z
在(不紧凑的)后缀树中,从所有字符串中找到最深的内部节点,这些节点具有叶节点。
希望能帮助到你。