标签:数据结构 二叉树 info root targe 图片 png pat solution
看到返回List就好奇试了一下
List<List<Integer>> res = new List<>();
结果果然还是不行的。
这道题的思路很好 理解,先序遍历将当前节点值添加进路径。
如果符合一条路径的标准就在res存做一个答案。
遍历到null就返回到上一层,然后会有一个removeLast方法,去除刚刚下一层递归存入
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int val, TreeNode left, TreeNode right) { * this.val = val; * this.left = left; * this.right = right; * } * } */ class Solution { LinkedList<List<Integer>> res = new LinkedList<>(); LinkedList<Integer> path = new LinkedList<>(); //List 不是数据结构,ArrayList 是数组,LinkedList 是双向链表, //List 是接口,接口可以作为返回值 //但是上面因为是接口,所以不能 List<List<Integer>> res = new List<>(); public List<List<Integer>> pathSum(TreeNode root, int target) { recur(root, target); return res; } void recur(TreeNode root, int tar){ //若节点 root 为空,则直接返回。 if(root == null) return; //更新目标值 tar -= root.val; //添加当前路径 path.add(root.val); //找到了一条路径 if(tar == 0 && root.left == null && root.right == null) res.add(new LinkedList(path)); //继续向两边递归 recur(root.left, tar); recur(root.right ,tar); //马上这一层递归就要结束了,去除这层递归的路径 path.removeLast(); } }
标签:数据结构 二叉树 info root targe 图片 png pat solution
原文地址:https://www.cnblogs.com/deerlet/p/14594810.html