java 全路径生成树型结构
时间: 2023-10-11 14:17:23 浏览: 39
可以使用递归的方式来生成树型结构。
假设我们有一个文件路径 `/home/user/Documents/file.txt`,我们可以先将路径按照 `/` 分割成一个字符串数组,然后递归地将每个节点添加到树中。
以下是示例代码:
```
public class TreeNode {
String name;
List<TreeNode> children;
public TreeNode(String name) {
this.name = name;
this.children = new ArrayList<>();
}
public void addChild(TreeNode child) {
children.add(child);
}
}
public class TreeGenerator {
public static void main(String[] args) {
String path = "/home/user/Documents/file.txt";
String[] pathSegments = path.split("/");
TreeNode root = new TreeNode("");
generateTree(pathSegments, 0, root);
// Print the tree
printTree(root, 0);
}
private static void generateTree(String[] pathSegments, int index, TreeNode node) {
if (index >= pathSegments.length) {
return;
}
String segment = pathSegments[index];
TreeNode child = findChild(segment, node);
if (child == null) {
child = new TreeNode(segment);
node.addChild(child);
}
generateTree(pathSegments, index + 1, child);
}
private static TreeNode findChild(String name, TreeNode node) {
for (TreeNode child : node.children) {
if (child.name.equals(name)) {
return child;
}
}
return null;
}
private static void printTree(TreeNode node, int depth) {
if (node == null) {
return;
}
for (int i = 0; i < depth; i++) {
System.out.print("-");
}
System.out.println(node.name);
for (TreeNode child : node.children) {
printTree(child, depth + 1);
}
}
}
```
输出结果为:
```
home
-user
--Documents
---file.txt
```