给定一个二叉树的根节点 root
,和一个整数 targetSum
,求该二叉树里节点值之和等于 targetSum
的 路径 的数目。
路径 不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。
class Solution {
public:
void f(TreeNode* root, int targetSum,vector<int>sum,int &count)
{
if(nullptr ==root)
{
return;
}
vector<int> tmp;
for(auto it:sum)
{
tmp.push_back(it+root->val);
if(it+root->val == targetSum)
{
count++;
}
}
sum = tmp;
sum.push_back(root->val);
if(root->val == targetSum)
{
count++;
}
f(root->left, targetSum,sum,count);
f(root->right, targetSum,sum,count);
}
int pathSum(TreeNode* root, int targetSum) {
int ret=0;
vector<int>sum;
f(root,targetSum,sum,ret);
return ret;
}
};