我遇到了一个处理目录树并在该树中找到最小和最大长度路径的问题。问题是这样的:
给定一串目录和文件名,其中“-”的数字表示所有目录之间的关系(例如一个目录中有哪些文件和目录),求最小和最大路径长度。
例如,具有以下内容的字符串:
dir1
-file1
-file2
-innerDir1
--file11
--file12
--file13
--innerinnerDir1
---file111
-innerDir2
--file21
显示file1、file2、innderDir1、innderDir2都在目录dir1中。file11、file12、file13 和 innerinnerDir1 都在目录 innderDir1 中。
文件路径“dir1/”显然是最短路径,其中“dir1/innerDir1/innerinnerDir1/file111”显然是最长路径(以字符串的长度衡量)。
从我的工作中,我了解到这是一个树问题,特别是目录树问题。所以,我尝试了两种递归方法:一种找到最大值,一种找到最小值。
但是,我无法完全弄清楚如何。让“-”确定哪些目录/文件在哪些目录中让我感到困惑。我还实现了一个基本的树结构(见下面的代码)。如何在给定字符串的情况下构建树?我是否应该不担心构建树然后遍历它,而只是尝试在不使用树结构的情况下找到最小值和最大值?
树代码:
public class Tree<T> {
private Node<T> root;
public Tree(T rootData) {
root = new Node<T>();
root.data = rootData;
root.children = new ArrayList<Node<T>>();
}
public static class Node<T> {
private T data;
private Node<T> parent;
private List<Node<T>> children;
}
}