java 得到一个父节点,递归找出所有子节点,装进一个List中
时间: 2024-05-12 09:19:22 浏览: 16
以下是Java代码示例:
```java
public class TreeNode {
private int id;
private List<TreeNode> children;
// 构造函数
public TreeNode(int id) {
this.id = id;
this.children = new ArrayList<>();
}
// 添加子节点
public void addChild(TreeNode child) {
this.children.add(child);
}
// 递归找出所有子节点
public List<TreeNode> getAllChildren() {
List<TreeNode> allChildren = new ArrayList<>();
for (TreeNode child : children) {
allChildren.add(child);
allChildren.addAll(child.getAllChildren());
}
return allChildren;
}
}
```
在上面的代码中,我们定义了一个树节点类 `TreeNode`,每个节点包含一个节点 ID 和一个子节点列表 `children`。
我们使用 `addChild` 方法向节点中添加子节点。然后,我们使用 `getAllChildren` 方法递归地找出所有子节点,并将它们装进一个 `List` 中返回。
使用示例:
```java
// 创建一个树结构
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);
node2.addChild(node5);
// 找出根节点的所有子节点
List<TreeNode> allChildren = root.getAllChildren();
for (TreeNode child : allChildren) {
System.out.println(child.getId());
}
```
以上代码将输出:
```
2
4
5
3
```