Java实现递归查询树结构的示例代码的攻略包括以下几个步骤:
- 定义树结构Node类
首先需要定义一个Node类来存储树节点的相关信息,例如节点id、父节点id、节点名称等。Node类的定义如下:
public class Node {
private String id; // 节点id
private String parentId; // 父节点id
private String name; // 节点名称
// 省略getter和setter方法
}
- 构建树结构
构建树结构需要先定义一个根节点,然后根据节点的父id关系逐一添加子节点,最终形成完整的树结构。
public class Tree {
private Node root; // 根节点
// 添加子节点
public void addChildNode(Node parent, Node child) {
if (root == null) { // 如果根节点为空,直接将新增节点设置为根节点
root = child;
} else if (parent != null) { // 如果父节点不为空,将新增节点添加到该父节点下
List<Node> children = parent.getChildren();
if (children == null) { // 如果父节点没有子节点列表,先创建子节点列表
children = new ArrayList<>();
}
children.add(child);
parent.setChildren(children);
}
}
// 根据节点id查找节点
public Node findNodeById(String id, Node node) {
if (node == null || node.getId().equals(id)) {
return node;
} else {
List<Node> children = node.getChildren();
if (children != null) {
for (Node child : children) {
Node result = findNodeById(id, child);
if (result != null) {
return result;
}
}
}
return null;
}
}
}
- 递归查询树结构
递归查询树结构需要从根节点开始遍历整个树,对每个节点进行比对,如果符合条件则返回该节点,如果不符合则递归查询该节点的子节点。具体代码实现如下:
Node result = tree.findNodeById("some_id", tree.getRoot());
if (result != null) {
System.out.println("查找成功,节点名称:" + result.getName() );
} else {
System.out.println("查找失败,不存在该节点");
}
例如,假设我们有一棵树结构,其中根节点的id为1,名称为"根节点",有两个子节点,id分别为2和3,名称分别为"节点2"和"节点3",其中id为3的节点又有一个子节点,id为4,名称为"节点4"。则可以按照以下方式构建树结构:
Tree tree = new Tree();
Node rootNode = new Node("1", null, "根节点");
Node node2 = new Node("2", "1", "节点2");
Node node3 = new Node("3", "1", "节点3");
Node node4 = new Node("4", "3", "节点4");
tree.addChildNode(rootNode, node2);
tree.addChildNode(rootNode, node3);
tree.addChildNode(node3, node4);
然后我们可以通过调用findNodeById方法来查询这棵树上的某个节点。例如,我们可以按照以下方式查询id为3的节点:
Node result = tree.findNodeById("3", tree.getRoot());
if (result != null) {
System.out.println("查找成功,节点名称:" + result.getName() );
} else {
System.out.println("查找失败,不存在该节点");
}
最终输出结果为"查找成功,节点名称:节点3"。同样,我们也可以查询其他节点,例如查询id为4的节点,即:
Node result = tree.findNodeById("4", tree.getRoot());
if (result != null) {
System.out.println("查找成功,节点名称:" + result.getName() );
} else {
System.out.println("查找失败,不存在该节点");
}
最终输出结果为"查找成功,节点名称:节点4"。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java实现递归查询树结构的示例代码 - Python技术站