Given a binary tree and a sum, find all root-to-leaf paths where each path's sum equals the given sum.
For example:Given the below binary tree and
sum = 22
,
5 / \ 4 8 / / \ 11 13 4 / \ / \ 7 2 5 1
return
[ [5,4,11,2], [5,8,4,5]
]
package leetCode; import java.util.ArrayList; import java.util.List; /** * Created by lxw, liwei4939@126.com on 2018/3/24. */ public class L113_PathSum { public List<List<Integer>> pathSum(TreeNode root, int sum){ List<List<Integer>> res = new ArrayList<>(); List<Integer> path = new ArrayList<>(); pathSum(root, sum, path, res); return res; } public void pathSum(TreeNode root, int sum, List<Integer> path, List<List<Integer>> res){ if (root == null){ return; } path.add(root.val); if (root.left == null && root.right == null && sum == root.val){ res.add(new ArrayList<>(path)); path.remove(path.size() - 1); return; }else { pathSum(root.left, sum-root.val, path, res); pathSum(root.right, sum-root.val, path, res); } path.remove(path.size() -1); } }