aboutsummaryrefslogtreecommitdiff
path: root/other/path_sum2.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'other/path_sum2.cpp')
-rw-r--r--other/path_sum2.cpp25
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);
+ }
+};