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:如果您知道如何编写前/后顺序树遍历的基本思想,然后我不明白为什么在这种情况下应用它会有问题。谢谢你的快速回答,在这种情况下顺序遍历可能吗?“可能”是的。例如,您可以在处理第一个子项之后处理父项。但是,这没有意义。如果有一个二叉树,其中左子树的项目低于父树,右子树的项目大于父树,则顺序处理将按顺序打印树。这就是你何时使用它的一个例子。但在这里它没有意义。