首先,我们需要创建一个方法来实现查询所有子节点id的功能。
// 定义一个方法,输入参数为父节点id和节点列表,返回值为该父节点下的所有子节点id public List<Long> getAllChildIds(Long parentId, List<Node> nodeList) { List<Long> childIds = new ArrayList<>(); getAllChildIds(parentId, nodeList, childIds); return childIds; }
然后,我们编写递归方法来实现查询子节点id的逻辑
// 递归查询子节点id的方法 private void getAllChildIds(Long parentId, List<Node> nodeList, List<Long> childIds) { for (Node node : nodeList) { if (node.getParentId().equals(parentId)) { childIds.add(node.getId()); getAllChildIds(node.getId(), nodeList, childIds); // 递归查询子节点的子节点 } } }
最后,我们可以定义一个Node类来表示节点信息,示例代码如下:
public class Node { private Long id; private Long parentId; // 省略构造方法、getter和setter }
这里给出一个简单的示例来演示如何使用上述方法来查询所有子节点id
public class Main { public static void main(String[] args) { List<Node> nodeList = new ArrayList<>(); // 添加节点信息到节点列表 // nodeList.add(new Node(1L, null)); // 根节点 // nodeList.add(new Node(2L, 1L)); // 1的子节点 // nodeList.add(new Node(3L, 1L)); // 1的子节点 // nodeList.add(new Node(4L, 2L)); // 2的子节点 // nodeList.add(new Node(5L, 2L)); // 2的子节点 Long parentId = 1L; List<Long> childIds = getAllChildIds(parentId, nodeList); System.out.println("Parent Node " + parentId + "'s child node ids: " + childIds); } }
在这个示例中,我们创建了一个Node类来表示节点信息,并在Main类的main方法中演示了如何使用getAllChildIds方法来查询指定父节点下的所有子节点id。
结论
通过以上步骤,我们成功实现了Java中递归查询所有子节点id的功能。希望新手开发者通过学习和练习能够掌握这一重要的技能。祝你编程愉快!