O(n2)的做法,dfs遍历整棵树,遍历的过程中查找是否有sum的和
class Solution {
int ans = 0;
public int pathSum(TreeNode root, int sum) {
find(root, sum, new ArrayList<Integer>());
return ans;
}
void find(TreeNode t, int sum, List<Integer> l){
if(t == null){
return;
}
List<Integer> li = new ArrayList<>();
for(int i = 0; i < l.size(); i++){
li.add(l.get(i) + t.val);
if(li.get(i) == sum)
ans++;
}
li.add(t.val);
if(t.val == sum)
ans ++;
find(t.left, sum, li);
find(t.right, sum, li);
}
}
利用前缀和的思想可以实现O(n)的复杂度