Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用预排序、后排序和顺序递归搜索目录中的文件_Java_Tree - Fatal编程技术网

Java 使用预排序、后排序和顺序递归搜索目录中的文件

Java 使用预排序、后排序和顺序递归搜索目录中的文件,java,tree,Java,Tree,例如,当我编写代码以递归方式搜索目录中的文件时,我将应用以下方法: public void list(File file) { System.out.println(file.getName()); File[] children = file.listFiles(); for (File child : children) { list(child); } } 如果我需要在预顺序、顺序和后顺序遍历中显示它,我该如何做呢 我无法将树遍历与此文件搜

例如,当我编写代码以递归方式搜索目录中的文件时,我将应用以下方法:

public void list(File file) {
    System.out.println(file.getName());
    File[] children = file.listFiles();
    for (File child : children) {
        list(child);
    }
}
如果我需要在预顺序、顺序和后顺序遍历中显示它,我该如何做呢


我无法将树遍历与此文件搜索关联起来。

您的代码是预先排序的,因为父级在子级之前处理(打印)。如果在循环后将打印移动到,则将是后期订购。在这种情况下,顺序没有太大意义。如果您有一个二叉树,那么在处理每一个子树的过程中处理父树就是这样。

您所做的是预序遍历

这是后序遍历:

public void list(File file) { 
    if(file == null)return;  
    File[] children = file.listFiles();
    for (File child : children) {
        list(child);
    }
   System.out.println(file.getName());
}

为了使遍历没有一个通用树的自然定义,这与文件搜索没有多大关系。你知道一般如何进行前/后顺序遍历吗?此外,顺序遍历只对二叉树有意义。解释得不够好吗?@OliCharlesworth我知道这三种遍历,但我想将它们与此文件搜索关联起来context@Cam:如果您知道如何编写前/后顺序树遍历的基本思想,然后我不明白为什么在这种情况下应用它会有问题。谢谢你的快速回答,在这种情况下顺序遍历可能吗?“可能”是的。例如,您可以在处理第一个子项之后处理父项。但是,这没有意义。如果有一个二叉树,其中左子树的项目低于父树,右子树的项目大于父树,则顺序处理将按顺序打印树。这就是你何时使用它的一个例子。但在这里它没有意义。