您的位置:首页 > 编程语言 > Java开发

Path Sum II leetcode java

2014-07-31 03:21 447 查看
题目: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 }}else{if(root.left!=null)pathSumHelper(root.left,sum,sumlist,pathlist);if(root.right!=null)pathSumHelper(root.right,sum,sumlist,pathlist);}sumlist.remove(sumlist.size()-1);}public List<List<Integer>> pathSum(TreeNode root, int sum) {List<List<Integer>> pathlist=new ArrayList<List<Integer>>();List<Integer> sumlist = new ArrayList<Integer>();pathSumHelper(root,sum,sumlist,pathlist);return pathlist;}

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: