可以使用递归的方式进行计算,需要注意的是,递归要有两个级别,一个递归(pathSum)是用来统计当前所在的节点,另一个递归(helper)是以它为根节点的树中到底有没有和等于 sum 的。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
class Solution { public: int pathSum(TreeNode* root, int sum) { if(root==nullptr) return 0; return pathSum(root->left,sum)+pathSum(root->right,sum)+helper(root,sum); } int helper(TreeNode* root, int sum) { if(root==nullptr) return 0; int ret=0; if(root->val==sum) ret++; ret+=helper(root->left,sum-root->val)+helper(root->right,sum-root->val); return ret; } };
|