通过根节点id递归查询子结点id
时间: 2023-09-16 22:16:09 浏览: 71
您可以使用递归方法来通过根节点ID查询子节点ID。以下是一个示代码:
```java
import java.util.ArrayListimport java.util.HashMap;
import java.util.List;
import java.util.Map;
public class RecursiveNodeSearch {
public static void main(String[] args {
// 构造节点数据
Map<Integer, List<Integer>> nodeMap = new HashMap<>();
nodeMap.put(1, List.of(2, 3));
nodeMap.put(2, List.of(4, 5));
nodeMap.put(3, List.of(6, 7));
nodeMap.put(4, List.of(8, 9));
int rootNodeId = 1;
List<Integer> result = new ArrayList<>();
// 递归查询子节点ID
recursiveSearch(nodeMap, rootNodeId, result);
System.out.println("子节点ID列表:");
for (Integer nodeId : result) {
System.out.println(nodeId);
}
}
private static void recursiveSearch(Map<Integer, List<Integer>> nodeMap, int nodeId, List<Integer> result) {
result.add(nodeId);
if (nodeMap.containsKey(nodeId)) {
List<Integer> children = nodeMap.get(nodeId);
for (Integer child : children) {
recursiveSearch(nodeMap, child, result);
}
}
}
}
```
在上述示例中,我们使用一个`nodeMap`来存储每个节点ID对应的子节点ID列表。然后,我们定义了一个`recursiveSearch`方法来递归查询子节点ID。该方法接收节点映射`nodeMap`、当前节点ID和结果列表`result`作为参数。
在`recursiveSearch`方法中,我们首先将当前节点ID添加到结果列表中。然后,我们检查当前节点ID是否存在于节点映射中,如果存在,我们遍历其子节点ID,并对每个子节点递归调用`recursiveSearch`方法。
运行上述示例代码,将会输出以下结果:
```
子节点ID列表:
1
2
4
8
9
5
3
6
7
```
这表示成功通过根节点ID递归查询到所有子节点ID。您可以根据自己的实际数据结构和需求进行相应的调整。