*Path Sum II

mac2022-06-30  145

题目:

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] ]题解: 这道题除了要判断是否有这样的一个path sum,还需要把所有的都可能性结果都返回,所以就用传统的DFS递归解决子问题。代码如下: 1 public void pathSumHelper(TreeNode root, int sum, List <Integer> sumlist, List<List<Integer>> pathlist){ 2 if(root==null) 3 return; 4 sumlist.add(root.val); 5 sum = sum-root.val; 6 if(root.left==null && root.right==null){ 7 if(sum==0){ 8 pathlist.add(new ArrayList<Integer>(sumlist)); 9 } 10 }else{ 11 if(root.left!=null) 12 pathSumHelper(root.left,sum,sumlist,pathlist); 13 if(root.right!=null) 14 pathSumHelper(root.right,sum,sumlist,pathlist); 15 } 16 sumlist.remove(sumlist.size()-1); 17 } 18 19 public List<List<Integer>> pathSum(TreeNode root, int sum) { 20 List<List<Integer>> pathlist=new ArrayList<List<Integer>>(); 21 List<Integer> sumlist = new ArrayList<Integer>(); 22 pathSumHelper(root,sum,sumlist,pathlist); 23 return pathlist; 24 }

 

reference:http://www.cnblogs.com/springfor/p/3879827.html

 

转载于:https://www.cnblogs.com/hygeia/p/4703656.html

最新回复(0)