题目描述:
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] ]
这个题比较简单,到了根节点的时候判断和是否等于sum,等于就将集合加入result即可。
代码如下:
public class Solution {
public List<List<Integer>> pathSum(TreeNode root, int sum) {
List<List<Integer>> result=new ArrayList<List<Integer>>();
if(root==null)
return result;
List<Integer> list=new ArrayList<Integer>();
getPath(root, 0, sum, list, result);
return result;
}
public void getPath(TreeNode root,int cursum,int sum,List<Integer> list,List<List<Integer>> result){
if(root.left==null&&root.right==null){
if(root.val+cursum==sum){
List<Integer> newList=new ArrayList<Integer>(list);
newList.add(root.val);
result.add(newList);
}
}
if(root.left!=null){
List<Integer> newList=new ArrayList<Integer>(list);
newList.add(root.val);
getPath(root.left, cursum+root.val, sum, newList, result);
}
if(root.right!=null){
List<Integer> newList=new ArrayList<Integer>(list);
newList.add(root.val);
getPath(root.right, cursum+root.val, sum, newList, result);
}
}
}
378

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



