刷题刷出新高度,偷偷领先!偷偷领先!偷偷领先! 关注我们,悄悄成为最优秀的自己!
解答思路:
在Java中,要找到二叉树的所有路径并进行先序遍历,可以通过递归的方式实现。我们可以先遍历根节点,然后分别遍历左子树和右子树,将遍历结果合并。对于每个节点,我们将其加入路径中,然后分别对左右子树进行相同的操作。当遍历到叶子节点时,将当前路径保存下来。
最优回答:
具体的Java代码实现可以如下:
import java.util.*;
class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) { val = x; }
}
public class Solution {
public List<List<Integer>> binaryTreePaths(TreeNode root) {
List<List<Integer>> res = new ArrayList<>(); //结果集,存放所有路径
List<Integer> path = new ArrayList<>(); //当前路径,存放从根节点到某一节点的路径
findPaths(root, path, res); //调用函数寻找所有路径
return res; //返回结果集
}
private void findPaths(TreeNode node, List<Integer> path, List<List<Integer>> res) {
if (node == null) return; //如果节点为空,则返回
path.add(node.val); //将当前节点值加入当前路径中
if (node.left == null && node.right == null) { //如果当前节点是叶子节点
res.add(new ArrayList<>(path)); //将当前路径添加到结果集中
} else { //否则,对左右子树进行相同的操作
findPaths(node.left, path, res);
findPaths(node.right, path, res);
}
path.remove(path.size() - 1); //回溯,移除当前节点值,寻找其他路径
}
}
本文链接:请描述在Java中如何实现二叉树的所有路径的先序遍历?
版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。让学习像火箭一样快速,微信扫码,获取考试解析、体验刷题服务,开启你的学习加速器!