public ArrayList<ArrayList<Integer>> FindPath(TreeNode root, int target) {
ArrayList<ArrayList<Integer>> res = new ArrayList<>();
ArrayList<Integer> values = new ArrayList<>();
backtrack(root,target,values,res);
return res;
}
// values : 记录从根节点到叶子节点的所有路径
// paths : 存储所有可能的结果
private void backtrack(TreeNode root, int target,
ArrayList<Integer> values,
ArrayList<ArrayList<Integer>> paths) {
if (root == null) {
return;
}
values.add(root.val);
if(root.left==null && root.right==null && root.val==target){
paths.add(new ArrayList<>(values));
}else{
backtrack(root.left,target-root.val,values,paths);
backtrack(root.right,target-root.val,values,paths);
}
values.remove(values.size()-1);
}
www.mianshi.online,www.i9code.cn
本文由博客一文多发平台 OpenWrite 发布!