113. Path Sum II

来源:互联网 发布:js面向对象编程案例 编辑:程序博客网 时间:2024/05/16 04:57

这道题是普通的dfs

public class Solution {    public List<List<Integer>> pathSum(TreeNode root, int sum) {        List<Integer> list = new ArrayList<>();        List<List<Integer>> twoList = new ArrayList<>();        if(root==null){            return twoList;        }        list.add(root.val);        dfs(twoList, list, sum, root.val, root);        return twoList;    }    private void dfs(List<List<Integer>> twoList, List<Integer> list, int target, int cur, TreeNode node) {        if (cur == target&&node.left==null&&node.right==null) {            twoList.add(new ArrayList<>(list));//bug所在地,必须这样写,不能直接list;引用问题,很坑。            return;        }else {            if(node.left!=null){                list.add(node.left.val);                dfs(twoList,list,target,cur+node.left.val,node.left);                list.remove(list.size()-1);            }            if(node.right!=null){                list.add(node.right.val);                dfs(twoList,list,target,cur+node.right.val,node.right);                list.remove(list.size()-1);        }    }    }}
0 0