深度优先搜索
class Solution {
public int pathSum(TreeNode root, int targetSum) {
/**
* 空节点返回0
*/
if (root == null){
return 0;
}
/**
* 分两种情况:路径包含该节点和不包含
* 两种情况需要分别递归,因此需要定义一个其他的方法
*/
int sum = ContainSelf(root, targetSum);
sum += pathSum(root.left, targetSum);
sum += pathSum(root.right, targetSum);
return sum;
}
public int ContainSelf(TreeNode root, int targetSum){
if (root == null){
return 0;
}
int sum = 0;
if (root.val == targetSum){
sum++;
}
return sum + ContainSelf(root.left, targetSum - root.val) + ContainSelf(root.right, targetSum - root.val);
}
}
/**
* 时间复杂度 O(n^2)
* 空间复杂度 O(logn)
*/
https://leetcode-cn.com/problems/path-sum-iii/