用java代码 写一个递归根据parentid查找他的children
时间: 2024-09-10 11:04:12 浏览: 44
在Java中,我们可以使用递归来编写一个函数,该函数用于根据`parentId`查找所有子节点。假设我们有一个简单的`TreeNode`类,其中包含一个`parentId`字段和一个存储子节点的列表。下面是一个示例代码:
```java
import java.util.ArrayList;
import java.util.List;
class TreeNode {
int id;
int parentId;
List<TreeNode> children;
// 构造函数和其他逻辑...
}
public class RecursiveNodeFinder {
public static void findChildren(TreeNode root, int parentId, List<TreeNode> result) {
if (root != null) {
if (root.parentId == parentId) { // 如果当前节点是目标父节点的子节点
result.add(root); // 添加到结果列表
}
for (TreeNode child : root.children) {
findChildren(child, parentId, result); // 递归查找每个子节点
}
}
}
public static List<TreeNode> findAllChildren(TreeNode root, int parentId) {
List<TreeNode> result = new ArrayList<>();
findChildren(root, parentId, result);
return result;
}
// 示例用法
public static void main(String[] args) {
TreeNode root = ... // 初始化你的树结构
List<TreeNode> childrenOfParent = findAllChildren(root, 1); // 查找id为1的父节点的所有子节点
// 输出结果
for (TreeNode child : childrenOfParent) {
System.out.println("Node " + child.id + " has parent with ID " + child.parentId);
}
}
}
```
在这个例子中,`findChildren`方法接受根节点、目标`parentId`以及一个结果列表作为参数。它会先检查当前节点是否为目标父节点,如果是就将其添加到结果列表。然后,遍历子节点并继续递归搜索。
阅读全文