我实现了一个未压缩的后缀树。我想知道如何解决在字符串中找到最长的表示子字符串的问题。我知道我们必须找到有两个孩子的最深的内部节点,但是如何编写代码呢。另外,我们如何知道最长的重复子串是什么。我对JAVA中的代码感兴趣。请给出java实现。作为参考,我的TrieNode看起来像
class TrieNode{
char ch;
LinkedList<TrieNode> child;
}
答案 0 :(得分:2)
答案 1 :(得分:1)
如果存储字符串字节的结尾,则它只是具有2个子节点的最深节点。
要找到最长的子字符串,您需要执行depth first search,保留对具有2个或更多子节点的最深节点的引用及其深度。这对于递归函数来说是最容易的。
答案 2 :(得分:0)
要找到最深的节点,还可以执行BFS并选择具有最高级别的节点。我认为具有最高级别的节点也是最深的节点。然后你可以检查它是否有2个孩子。否则更高。 不确定这是否会奏效。任何评论pps?