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] ]
/** * Definition for binary tree * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ public class Solution { public List<List<Integer>> pathSum(TreeNode root, int sum) { List<List<Integer>> results = new ArrayList<List<Integer>>(); ArrayList<Integer> result= new ArrayList<Integer>(); pSum(root, sum, results, result); return results; } public void pSum(TreeNode root, int sum, List<List<Integer>> results, ArrayList<Integer> result){ if((root==null)&&(result.size()==0)){ return; }else if((root.val==sum)&&(root.left==null&&root.right==null)){ result.add(root.val); results.add(result); return; }else{ if(root.left!=null&&root.right!=null){ result.add(root.val); ArrayList<Integer> res= new ArrayList<Integer>(); for(int i=0;i<result.size();i++){ res.add(result.get(i)); } pSum(root.left, sum-root.val, results, result); pSum(root.right, sum-root.val, results, res); return ; } else if(root.left!=null&&root.right==null){ result.add(root.val); pSum(root.left, sum-root.val, results, result); //pSum(root.right, sum-root.val, results, result); return ; } else if(root.left==null&&root.right!=null){ result.add(root.val); //pSum(root.left, sum-root.val, results, result); pSum(root.right, sum-root.val, results, result); return; } return ; } } }
380

被折叠的 条评论
为什么被折叠?



