java将树结构平铺为list
时间: 2023-09-14 09:06:29 浏览: 62
在Java中,可以使用递归的方式将树结构平铺为list。具体实现如下:
首先,定义一个树节点的类:
```
public class TreeNode {
private int value;
private List<TreeNode> children;
public TreeNode(int value) {
this.value = value;
children = new ArrayList<>();
}
public int getValue() {
return value;
}
public void addChild(TreeNode child) {
children.add(child);
}
public List<TreeNode> getChildren() {
return children;
}
}
```
然后,定义一个递归函数,该函数接收一个树节点和一个list作为参数,在函数内部将树节点和其子节点平铺为list。具体实现如下:
```
public static void flatten(TreeNode node, List<Integer> list) {
list.add(node.getValue());
for (TreeNode child : node.getChildren()) {
flatten(child, list);
}
}
```
最后,定义一个测试函数,创建一个树,并将其平铺为list输出:
```
public static void main(String[] args) {
TreeNode root = new TreeNode(1);
TreeNode node2 = new TreeNode(2);
TreeNode node3 = new TreeNode(3);
TreeNode node4 = new TreeNode(4);
TreeNode node5 = new TreeNode(5);
root.addChild(node2);
root.addChild(node3);
node2.addChild(node4);
node3.addChild(node5);
List<Integer> list = new ArrayList<>();
flatten(root, list);
System.out.println(list);
}
```
运行结果为:[1, 2, 4, 3, 5],表示树节点1的子树被平铺为list后的结果。