递归查询当前节点的所有父节点 Java
时间: 2023-09-12 18:10:18 浏览: 77
在 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 表示根节点)。