java 实现由子节点递归查询所有父节点
时间: 2023-09-14 07:10:42 浏览: 331
在 Java 中,可以使用递归来实现由子节点递归查询所有父节点。以下是一个示例代码:
```java
import java.util.ArrayList;
import java.util.List;
class TreeNode {
int value;
TreeNode parent;
public TreeNode(int value) {
this.value = value;
}
}
public class Main {
public static void main(String[] args) {
// 创建一个简单的树结构
TreeNode root = new TreeNode(1);
TreeNode node2 = new TreeNode(2);
TreeNode node3 = new TreeNode(3);
TreeNode node4 = new TreeNode(4);
TreeNode node5 = new TreeNode(5);
node2.parent = root;
node3.parent = root;
node4.parent = node2;
node5.parent = node2;
// 查询节点5的所有父节点
List<Integer> parents = findParents(node5);
// 输出结果
for (Integer parent : parents) {
System.out.println(parent);
}
}
public static List<Integer> findParents(TreeNode node) {
List<Integer> parents = new ArrayList<>();
// 递归查询父节点
while (node.parent != null) {
parents.add(node.parent.value);
node = node.parent;
}
return parents;
}
}
```
在上面的示例代码中,我们首先定义了一个简单的树结构,每个节点包含一个值和一个指向父节点的引用。然后,我们定义了一个 `findParents` 方法,该方法使用递归来查询给定节点的所有父节点。在 `findParents` 方法中,我们使用一个循环来不断向上遍历父节点,将每个父节点的值添加到结果列表中,直到节点的父节点为空。最后,我们在 `main` 方法中调用 `findParents` 方法来查询节点5的所有父节点,并将结果打印出来。
阅读全文