稍微复杂了些,将就看吧-_-
import java.util.*;
public class Solution {
private int res=0;
public void dfs(TreeNode root,ArrayList<Integer> sums,int target){
int val = root.val;
if(val==target) //如果节点值与target相等,也算是一条路径
res++;
for(int i=0;i<sums.size();++i){
sums.set(i,sums.get(i)+val);
if(sums.get(i)==target){
res++;//如果某个累加值等于target,则符合路径+1
}
}
sums.add(val);
if(root.left!=null) dfs(root.left,new ArrayList<Integer>(sums),target);
if(root.right!=null) dfs(root.right,new ArrayList<Integer>(sums),target);
}
public int FindPath (TreeNode root, int sum) {
// write code here
if(root==null)
return 0;
dfs(root, new ArrayList<Integer>(), sum);
return res;
}
}