diff options
Diffstat (limited to 'other/path_sum2.cpp')
-rw-r--r-- | other/path_sum2.cpp | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/other/path_sum2.cpp b/other/path_sum2.cpp new file mode 100644 index 0000000..3ccfc65 --- /dev/null +++ b/other/path_sum2.cpp @@ -0,0 +1,25 @@ +#include "leetcode.h" + +class Solution { +public: + vvd pathSum(TreeNode *root, int targetSum) { + vvd ans; + vector<int> d; + dfs(root, targetSum, d, ans); + return ans; + } + +private: + void dfs(TreeNode *root, int targetSum, vector<int> d, vvd & ans) { + if (root == NULL) + return; + d.push_back(root->val); + targetSum -= root->val; + if (targetSum == 0 && root->left == NULL && root->right == NULL) { + ans.push_back(d); + return; + } + dfs(root->left, targetSum, d, ans); + dfs(root->right, targetSum, d, ans); + } +}; |