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; } };