题解 | #二叉树中和为某一值的路径(三)#
二叉树中和为某一值的路径(三)
https://www.nowcoder.com/practice/965fef32cae14a17a8e86c76ffe3131f
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param root TreeNode类
* @param sum int整型
* @return int整型
*/
int road=0;
void jisuan(TreeNode* root,int sum,int s){ //从当前子树进行计算,只要有一处等于sum,road++
s+=root->val; //s用于计算从当前子树根节点到目前节点的和
if(s==sum) road++; //只要出现一次符合的值 road就自增一次
if(root->left!=NULL) jisuan(root->left,sum,s);
if(root->right!=NULL) jisuan(root->right,sum,s);
}
void quan(TreeNode* root,int sum){ //从每个节点都要算一下往下有没有符合sum的路径
jisuan(root,sum,0);
if(root->left!=NULL) quan(root->left,sum);
if(root->right!=NULL) quan(root->right,sum);
}
int FindPath(TreeNode* root, int sum) {
// write code here
if(root==NULL) return 0;
quan(root,sum);
return road;
}
};
