// 定义节点类
class Node {
int id; // 节点ID
int parentId; // 父节点ID
String name; // 节点名称
public Node(int id, int parentId, String name) {
this.id = id;
this.parentId = parentId;
this.name = name;
}
@Override
public String toString() {
return "Node{" +
"id=" + id +
", parentId=" + parentId +
", name='" + name + '\'' +
'}';
}
}
public class RecursiveQuery {
// 模拟的节点列表
static List<Node> nodeList = Arrays.asList(
new Node(1, 0, "Root"),
new Node(2, 1, "Child 1"),
new Node(3, 1, "Child 2"),
new Node(4, 2, "Child 1.1"),
new Node(5, 2, "Child 1.2"),
new Node(6, 3, "Child 2.1")
);
// 递归查询所有子节点
public static List<Node> getAllChildren(int parentId) {
List<Node> children = new ArrayList<>();
for (Node node : nodeList) {
if (node.parentId == parentId) {
children.add(node);
// 递归查询子节点的子节点
children.addAll(getAllChildren(node.id));
}
}
return children;
}
// 递归查询所有父节点
public static List<Node> getAllParents(int nodeId) {
List<Node> parents = new ArrayList<>();
for (Node node : nodeList) {
if (node.id == nodeId) {
if (node.parentId != 0) {
parents.add(node);
// 递归查询父节点的父节点
parents.addAll(getAllParents(node.parentId));
}
break;
}
}
return parents;
}
public static void main(String[] args) {
// 查询所有子节点
System.out.println("All children of node 1: " + getAllChildren(1));
// 查询所有父节点
System.out.println("All parents of node 4: " + getAllParents(4));
}
}
id
(节点ID)、parentId
(父节点ID)和 name
(节点名称)。getAllChildren
和 getAllParents
方法来查询指定节点的子节点和父节点。通过这种方式,可以实现对父子节点关系的递归查询。
上一篇:java怎么定义数组
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站