详细思路
class Solution { public: vector<vector<int>> pathSum(TreeNode* root, int targetSum) { if(!root)return {}; vector<vector<int>>ans; vector<int>ans1; dfs(root,targetSum,ans,ans1); return ans; } void dfs(TreeNode*root,int targetSum,vector<vector<int>>&ans,vector<int>&ans1){ if(!root->left&&!root->right){ ans1.push_back(root->val); if(root->val==targetSum){ ans.push_back(ans1); return ; }else return; } ans1.push_back(root->val); int newVal=targetSum-root->val; if(root->left){ dfs(root->left,newVal,ans,ans1); ans1.pop_back(); } if(root->right){ dfs(root->right,newVal,ans,ans1); ans1.pop_back(); } } };
原文:https://www.cnblogs.com/zhouzihong/p/15088700.html