public class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) { val = x; }
}
public List<List<Integer>> pathSum(TreeNode root, int sum) {
if(root == null)
return new ArrayList();
List<List<Integer>> result = new LinkedList<List<Integer>>();
List<Integer> list = new LinkedList<Integer>();
getPathNum(root, sum,list,result);
return result;
}
public void getPathNum(TreeNode root, int sum,List<Integer> list,List<List<Integer>> result){
if(root.left == null && root.right ==null){
if(sum == root.val){
List<Integer> tmp = new LinkedList<Integer>(list);
tmp.add(root.val);
result.add(tmp);
return;
}
else return;
}
list.add(root.val);
List<Integer> ltmp = new LinkedList<Integer>(list);
List<Integer> rtmp = new LinkedList<Integer>(list);
if(root.left !=null)
getPathNum(root.left, sum-root.val,ltmp,result);
if(root.right !=null)
getPathNum(root.right, sum-root.val,rtmp, result);
}
问题描述:
Given a binary tree and a sum, find all root-to-leaf paths where each path‘s sum equals the given sum.
For example:sum = 22,
5
/ 4 8
/ / 11 13 4
/ \ / 7 2 5 1
return
[ [5,4,11,2], [5,8,4,5] ]
public class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) { val = x; }
}
public List<List<Integer>> pathSum(TreeNode root, int sum) {
if(root == null)
return new ArrayList();
List<List<Integer>> result = new LinkedList<List<Integer>>();
List<Integer> list = new LinkedList<Integer>();
getPathNum(root, sum,list,result);
return result;
}
public void getPathNum(TreeNode root, int sum,List<Integer> list,List<List<Integer>> result){
if(root.left == null && root.right ==null){
if(sum == root.val){
List<Integer> tmp = new LinkedList<Integer>(list);
tmp.add(root.val);
result.add(tmp);
return;
}
else return;
}
list.add(root.val);
List<Integer> ltmp = new LinkedList<Integer>(list);
List<Integer> rtmp = new LinkedList<Integer>(list);
if(root.left !=null)
getPathNum(root.left, sum-root.val,ltmp,result);
if(root.right !=null)
getPathNum(root.right, sum-root.val,rtmp, result);
}原文地址:http://blog.csdn.net/chenlei0630/article/details/40476621