113. 路径总和 II

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/path-sum-ii
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。


这次不是判断有没有路径了,而是把这条路径找出来。
从上至下找,添加到集合中,不符合就回溯,把这个值给拿出来。


    Stack<Integer> stack = new Stack<>();
    List<List<Integer>> ret = new ArrayList<>();
    public List<List<Integer>> pathSum(TreeNode root, int targetSum) {
        dfs(root,targetSum);
        return ret;

    }

    public void dfs(TreeNode node, int targetSum) {
        // 节点只有一个孩子,遍历就会出现null
        if(node == null) {
            return;
        }
        // 找到了叶子节点
        if(node.left == null && node.right == null) {
            if(targetSum == node.val){
                List<Integer> list = new ArrayList<>(stack);
                // 此时stack还没有加入叶子节点,这一步加入。
                list.add(node.val);
                ret.add(list);
            }
            return;
        }
        stack.push(node.val);
        dfs(node.left, targetSum-node.val);
        dfs(node.right,targetSum-node.val);
        stack.pop();
       
    }
posted @ 2022-02-23 21:34  一颗青菜  阅读(2)  评论(0)    收藏  举报