就像之前说过的,你的树是不正确的。
这就是我在通过我的代码运行“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。
后缀 Trie 代码:
└── 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
在(不紧凑的)后缀 trie 中,从所有字符串中找到具有叶节点的最深的内部节点。
希望它有帮助。