我创建了一个节点类和一个树类。从main,我调用suffixTree t = new suffixTree(string);它在一个while循环中,所以它总是变量t。
问题是,我想读取一个输入文件并为每个字符串创建一个新树。显然,它不会创建新实例。
变量“t”在每次交互中都是相同的,但每次创建它时都应该是一个新实例。树构造函数有一个Node root = new Node();
这是一个复制的代码,我唯一做的就是从输入中读取并遍历树。
问题是,如果我输入mississippi $然后acacdcacd $它会添加到同一棵树并在我遍历时给出错误的结果。
提前致谢
答案 0 :(得分:0)
您正在创建新实例,但是您在创建后立即丢弃它们,因为它们不会存储在任何地方,因此它们无法访问并标记为垃圾收集准备就绪。
看看以下内容:
// this is where the SuffixTree instances will end up
List<SuffixTree> suffixes = new ArrayList<SuffixTree>();
String[] strings = new String[3];
for (String string : strings) {
// A new suffix tree is created here but if you don't do anything
// with it then it is marked as garbage collectable when the closed
// curly brace is reached
SuffixTree t = new SuffixTree(string);
// Now I'm pushing the object into the suffixes list: this will prevent
// the loss of the object currently stored in the t variable
suffixes.add(t);
}