java - 将 BST 的遍历输出到文件

标签 java file

我编写了一个程序,它可以使用二叉搜索树进行操作,并且我有一个方法可以打印它的后序遍历。

public static void postOrderTrav(TreeNode node){
    if(node != null){
        postOrderTrav(node.getLeft());
        postOrderTrav(node.getRight());
        System.out.print(node.getVal() + " ");
    }
}

但是,我也想将后序遍历打印到文件。在使用递归的方法中,我该如何做到这一点?我尝试过在不同的地方调用 writeToFile 方法,但它们总是只写出一个数字......

最佳答案

如果在 writeToFile 方法中你提到你总是打开、写入和关闭同一个文件,那么你基本上是在告诉它在每次打印时覆盖所有内容,导致文件只包含一个程序终止时的值。

如果您坚持以追加模式打开文件,则可以通过像这样打开文件(注意 true 参数)来克服这个问题:

FileWriter fw = new FileWriter(file.getAbsoluteFile(), true);

但是,每次写入时打开和关闭文件的效率确实很低,因此更好的方法如下:

假设您从 main 调用您的方法,如果一次打印一个元素,您可以执行以下操作:

private static BufferedWriter bw;

public static void main(String[] args) {

    File file = new File("/your/file/path/<filename>");

    // if file doesnt exists, then create it
    if (!file.exists()) {
        file.createNewFile();
    }

    FileWriter fw = new FileWriter(file.getAbsoluteFile());
    BufferedWriter bw = new BufferedWriter(fw);

    postOrderTrav(node);

    bw.close();
}

在你的方法中你会:

public static void postOrderTrav(TreeNode node){
    if(node != null){
        postOrderTrav(node.getLeft());
        postOrderTrav(node.getRight());
        System.out.print(node.getVal() + " ");
        bw.write(node.getVal() + " ");
    }
}

看看here有关打印到文件的信息。您可以在打印输出时直接打印到文件,也可以将结果存储在数据结构(或字符串)中并在最后打印。

关于java - 将 BST 的遍历输出到文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22466839/

相关文章:

python - 文件描述符位置

java - 抓取字符串中具有相同开头但结尾和长度可变的子字符串并将其添加到数组中

java - Foreach 循环错误...未定义类型

java - java读取二维数组文本文件

android - 如何在应用程序目录中添加文件?

java - 从字节数组中提取 WAV 文件

java - 使用 Nimbus 外观时,JButton 在 JToolBar 中不可见

java - 你在哪里定义spring bean配置文件

java - 以JSP形式接受SQL查询

file - 从 FileManager 接收后更新 CKEditor 中的图像路径