/**
* Definition for binary tree
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
public class Solution {
private List<List<Integer>> resultList = new ArrayList<List<Integer>>();
public void solve(TreeNode root, List<Integer> tmpList, int sum,
int currentSum) {
if (root == null) {
return;
}
//把当前节点进入到list中
tmpList.add(root.val);
if (root.left == null && root.right == null) {
if (currentSum+root.val == sum) {
//每次输出都要新建一个arraylist,否则指向同一个地址
ArrayList<Integer>second=new ArrayList<Integer>();
for(int i=0;i<tmpList.size();i++){
second.add(tmpList.get(i));
}
resultList.add(second);
}
//当前层递归结束需要删除当前节点
tmpList.remove(tmpList.size()-1);
return;
} else {
solve(root.left, tmpList, sum, currentSum + root.val);
solve(root.right, tmpList, sum, currentSum + root.val);
tmpList.remove(tmpList.size()-1);//递归结束需要删除当前节点
}
}
public List<List<Integer>> pathSum(TreeNode root, int sum) {
ArrayList<Integer> tmpList = new ArrayList<Integer>();
solve(root, tmpList, sum, 0);
return resultList;
}
}
【LeetCode】Path Sum II
最新推荐文章于 2017-06-29 10:05:00 发布