java递归查询父节点
时间: 2023-09-11 11:12:05 浏览: 116
在Java中,可以使用递归方式来查询父节点。假设我们有一个节点类Node,其中包含一个指向父节点的引用parent:
```
class Node {
Node parent;
// other fields and methods
}
```
那么,查询一个节点的父节点可以使用以下递归方法:
```
public static Node findParentNode(Node node) {
if (node.parent == null) {
return node;
} else {
return findParentNode(node.parent);
}
}
```
这个方法首先检查传入的节点是否有父节点,如果没有父节点,则返回该节点本身;否则递归调用findParentNode方法,直到找到没有父节点的节点为止。
相关问题
java递归查询父节点下的子节点信息
Java递归查询父节点下的子节点是一种非常常见的算法,在实际开发中也经常用到。具体实现方法如下:
1.定义一个Node类,表示树的节点。节点包含一个name字段,表示节点名称,和一个List节点,表示子节点列表。
2.定义一个查询方法,该方法接受两个参数,一个是当前节点,一个是待查询的节点名称。在方法中,首先判断当前节点是否为空,如果为空直接返回null,如果不为空,则遍历当前节点的子节点,如果有子节点的名称匹配待查询节点名称,则返回该子节点;如果没有找到,则递归调用该方法,传入每个子节点,继续查找,直到找到为止。
具体代码如下:
public class Node {
private String name;
private List<Node> children;
public Node(String name) {
this.name = name;
this.children = new ArrayList<>();
}
public String getName() {
return name;
}
public List<Node> getChildren() {
return children;
}
// 递归查找子节点
public Node findNode(String nodeName) {
if (this.name.equals(nodeName)) {
return this;
} else {
for (Node child : children) {
Node result = child.findNode(nodeName);
if (result != null) {
return result;
}
}
return null;
}
}
}
在使用时,可以先创建一棵树,然后调用根节点的findNode方法,即可递归查找子节点。实现方法简洁、易懂,适用范围很广。
递归查询当前节点的所有父节点 Java
在 Java 中,可以使用递归方法来查询当前节点的所有父节点。假设我们有一个树形结构,每个节点都有一个父节点,我们可以定义一个 Node 类来表示节点,其中包含一个指向父节点的引用。然后,我们可以使用递归方法来查询当前节点的所有父节点,直到根节点。
下面是一个示例代码:
```
public class Node {
private Node parent;
public Node(Node parent) {
this.parent = parent;
}
public Node getParent() {
return parent;
}
public List<Node> getAllParents() {
List<Node> parents = new ArrayList<>();
Node currParent = getParent();
while (currParent != null) {
parents.add(currParent);
currParent = currParent.getParent();
}
return parents;
}
}
```
在这个示例中,我们定义了一个 Node 类,其中包含一个指向父节点的引用。然后,我们实现了一个 getAllParents() 方法,该方法使用递归来查询当前节点的所有父节点。该方法首先检查当前节点的父节点是否为空,如果不为空,则将其添加到一个 List 中,并递归调用 getAllParents() 方法以查找更多的父节点。如果当前节点没有父节点,说明已经到达了根节点,该方法返回一个空的 List。
使用示例:
```
Node root = new Node(null);
Node child1 = new Node(root);
Node child2 = new Node(root);
Node grandchild = new Node(child1);
List<Node> parents = grandchild.getAllParents();
for (Node parent : parents) {
System.out.println(parent);
}
```
这将输出:
```
Node@1c20c684
Node@1c20c684
```
其中,Node@1c20c684 是 Node 类的默认 toString() 方法的输出,表示一个 Node 对象。这个输出表明,grandchild 的所有父节点分别是 child1、root 和 null(null 表示根节点)。
阅读全文