我拥有的程序当前是由两种类型的节点组成的二进制树:问题和答案。
填充树后,我试图使用树的预订遍历来打印树的结构。我当前的代码是:
private static void writeToFile(LinkedBinaryTreeNode<String> node){
try {
PrintWriter writer = new PrintWriter("output.txt");
node.traversePreorder( n -> {
if( n.isLeaf() ){
writer.println("A: " + n.getData());
} else {
writer.println("Q: " + n.getData());
}
});
} catch (IOException e ){
e.printStackTrace();
}
}
每当我运行程序并创建一个完整的树并尝试将结构输出到文件时,我只会得到一个空白文件。
我知道逻辑是正确的,因为放置:
System.out.println("A: " + n.getData());
和:
System.out.println("Q: " + n.getData());
在各自的位置代替印刷作者的位置,将正确的输出产生到控制台。
按下以下作者:
private static void writeToFile(LinkedBinaryTreeNode<String> node){
PrintWriter writer = null;
try {
writer = new PrintWriter("output.txt");
node.traversePreorder( n -> {
if( n.isLeaf() ){
writer.println("A: " + n.getData());
} else {
writer.println("Q: " + n.getData());
}
});
writer.flush();
} catch (IOException e ){
e.printStackTrace();
} finally {
if (writer != null) {
writer.close();
}
}
}