路径总和 III
## 其实这个题就是前边的加强版吧,考虑使用每个节点作为叶子节点然后dfs,所以这里就需要两个dfs,第一个是普通的统计dfs,第二个是遍历树哦那个的dfs
class Solution {
public:
int ans = 0;
int pathSum(TreeNode* root, int sum) {
if (root == NULL)return 0;
dfs2(root, sum);
return ans;
}
void dfs2(TreeNode* rt, int sum) {
if (rt == NULL)return;
dfs(rt,sum);
dfs2(rt->left, sum);
dfs2(rt->right, sum);
}
void dfs(TreeNode* rt, int curSum) {
if (rt == NULL) {
return 0;;
}
curSum -= rt->val;
if (curSum == 0) {
ans++;
}
dfs(rt->left, curSum);
dfs(rt->right, curSum);
}
};
其实显然是可以记忆化的,但是我比较懒。。。。