我正在寻找一种方法来解决一个简单的问题,并找到了这个递归解决方案:https ://stackoverflow.com/a/674119/536607
这很好,但它假设您有一个固定的起始根,然后在其下构建文件结构的其余部分。
我正在尝试提出一种算法,它基本上做同样的事情,除了没有第一个硬编码的根。例如,我有以下文件
Data/test.txt
Data/dir/results.txt
Another/image.jpg
file.dat
将导致以下树
Data
test.txt
dir
results.txt
Another
image.txt
file.dat
所以它几乎就像其他解决方案一样,除了我删除顶部根然后将所有内容推回。但我想你真的不能轻易做到这一点(你可以吗?那样会很方便)
这是我正在考虑的算法
- 首先,像往常一样分割路径
- 定义一个新方法,它将检查树视图是否包含一个键等于路径第一部分的节点(因为我们植根于目录)
- 如果存在,则返回该节点。否则,创建节点并返回它
- 现在将节点和其余路径部分传递给另一个方法,该方法将在步骤 3 中找到的节点视为根并从那里开始。
听起来应该可以。对第二步不太清楚,因为如果文件根植于它存储的任何位置怎么办?