Java 循环树结构的list
时间: 2023-09-22 13:12:24 浏览: 46
可以使用递归实现循环树结构的list。
例如,假设我们有以下类:
```
public class TreeNode {
private String name;
private List<TreeNode> children;
public TreeNode(String name) {
this.name = name;
this.children = new ArrayList<>();
}
public String getName() {
return name;
}
public List<TreeNode> getChildren() {
return children;
}
public void addChild(TreeNode child) {
children.add(child);
}
public void removeChild(TreeNode child) {
children.remove(child);
}
}
```
这个类表示一个树节点,其中包含一个名字和一个子节点列表。
现在,我们可以使用递归函数来遍历这个树结构,并生成一个列表。例如,以下是一个将树转换为列表的方法:
```
public List<String> flattenTree(TreeNode node) {
List<String> result = new ArrayList<>();
flattenTreeHelper(node, result);
return result;
}
private void flattenTreeHelper(TreeNode node, List<String> result) {
result.add(node.getName());
for (TreeNode child : node.getChildren()) {
flattenTreeHelper(child, result);
}
}
```
这个方法首先创建一个空列表,然后使用递归函数 `flattenTreeHelper` 遍历树结构,并将每个节点的名称添加到列表中。
例如,假设我们有以下树结构:
```
A
├── B
│ ├── C
│ └── D
└── E
├── F
└── G
```
我们可以使用以下代码将其转换为列表:
```
TreeNode root = new TreeNode("A");
TreeNode b = new TreeNode("B");
TreeNode c = new TreeNode("C");
TreeNode d = new TreeNode("D");
TreeNode e = new TreeNode("E");
TreeNode f = new TreeNode("F");
TreeNode g = new TreeNode("G");
root.addChild(b);
b.addChild(c);
b.addChild(d);
root.addChild(e);
e.addChild(f);
e.addChild(g);
List<String> flattened = flattenTree(root);
System.out.println(flattened);
```
这将输出以下内容:
```
[A, B, C, D, E, F, G]
```