使用递归返回从树根到目标的树节点的ArrayList的方法如下:
下面是一个示例代码:
class TreeNode {
int val;
TreeNode left;
TreeNode right;
public TreeNode(int val) {
this.val = val;
this.left = null;
this.right = null;
}
}
public class TreeTraversal {
public static ArrayList<Integer> findPath(TreeNode root, TreeNode target) {
ArrayList<Integer> path = new ArrayList<>();
if (root == null) {
return path;
}
if (root == target) {
path.add(root.val);
return path;
}
ArrayList<Integer> leftPath = findPath(root.left, target);
if (!leftPath.isEmpty()) {
path.addAll(leftPath);
path.add(root.val);
return path;
}
ArrayList<Integer> rightPath = findPath(root.right, target);
if (!rightPath.isEmpty()) {
path.addAll(rightPath);
path.add(root.val);
return path;
}
return path;
}
public static void main(String[] args) {
// 创建一个示例树
TreeNode root = new TreeNode(1);
root.left = new TreeNode(2);
root.right = new TreeNode(3);
root.left.left = new TreeNode(4);
root.left.right = new TreeNode(5);
root.right.left = new TreeNode(6);
root.right.right = new TreeNode(7);
// 查找从根节点到目标节点5的路径
TreeNode target = root.left.right;
ArrayList<Integer> path = findPath(root, target);
// 输出路径
for (int i = path.size() - 1; i >= 0; i--) {
System.out.print(path.get(i) + " ");
}
}
}
这个例子中,我们创建了一个包含7个节点的二叉树。然后,我们使用递归函数findPath
来查找从根节点到目标节点5的路径。最后,我们按照从根节点到目标节点的顺序输出路径节点的值。输出结果为:1 2 5。
腾讯云相关产品和产品介绍链接地址:
请注意,以上只是腾讯云的一些相关产品,还有其他云计算品牌商也提供类似的产品和服务。
领取专属 10元无门槛券
手把手带您无忧上云