LeetCode【113】路径总和II

题目:
给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径。

说明: 叶子节点是指没有子节点的节点。

示例:
给定如下二叉树,以及目标和 sum = 22,

          5
         / \
        4   8
       /   / \
      11  13  4
     /  \    / \
    7    2  5   1

返回:

[
[5,4,11,2],
[5,8,4,5]
]

public List<List<Integer>> pathSum(TreeNode root, int sum) {
        List<List<Integer>> resultList = new ArrayList<>();
        DFS(resultList,new ArrayList<>(),root,sum,sum);
        return resultList;
    }
    public void DFS(List<List<Integer>> resultList,List<Integer> tmpList,TreeNode node,int sum ,int remain){
        //递归终止条件
        if(node == null)
            return;
        tmpList.add(node.val);
        remain = remain-node.val;
        //所有递归满足条件的tmpList都会被放入resultList
        if(remain==0&& node.left==null && node.right==null){
            resultList.add(tmpList);
            return;
        }
        DFS(resultList,new ArrayList<>(tmpList),node.left,sum,remain);
        DFS(resultList,new ArrayList<>(tmpList),node.right,sum,remain);
    }
发布了55 篇原创文章 · 获赞 14 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq422243639/article/details/103752901