我在执行此操作时遇到了一些麻烦。我知道我需要进行深度优先搜索来找到最深的路径,这将给出子串的索引。有一些问题实施DFS,可能是我缺乏了解:最长的重复子字符串后缀树dfs
int getDeepestPath(TreeNode node)
{
int maxDistance = 0;
TreeNode maxNode;
if(node == null) return 0;
System.out.println(node.getSuffix());
if(node.getSuffix() != -1) return 0;
else
{
TreeNode nextNode = node.getChild();
while(true)
{
int distance = 0;
if(nextNode != null)
{
distance = (nextNode.getRightLabel() -nextNode.getLeftLabel()) + 1;
System.out.println(distance + " distance");
distance = getDeepestPath(nextNode,t2Info) + distance;
if(distance > maxDistance) maxDistance = distance;
nextNode = nextNode.getSibling();
}
else break;
}
}
System.out.println(maxDistance);
return maxDistance;
}
的最终目的是为了保存最深的节点和长度路径 - 我只是想打印的路径的长度在此刻。
感谢
请问你能解释什么是树节点的“后缀”,“孩子”,“右标签”,“左标签”和“兄弟”? – 2013-02-14 20:09:10
yes-child是节点的第一个子节点(链表的头部),兄弟节点是共享当前节点父节点的节点,左右标签用于后缀树的短边标签索引 – drunkmonkey 2013-02-14 20:10:25
应该提到后缀== -1意味着该节点是一个分支 – drunkmonkey 2013-02-14 20:21:45