aboutsummaryrefslogtreecommitdiff
path: root/other/path_sum.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'other/path_sum.cpp')
-rw-r--r--other/path_sum.cpp23
1 files changed, 23 insertions, 0 deletions
diff --git a/other/path_sum.cpp b/other/path_sum.cpp
new file mode 100644
index 0000000..41498ca
--- /dev/null
+++ b/other/path_sum.cpp
@@ -0,0 +1,23 @@
+#include "leetcode.h"
+
+class Solution {
+public:
+ bool hasPathSum(TreeNode *root, int targetSum) {
+ if (root == NULL)
+ return false;
+ stack<pair<TreeNode *, int>> s;
+ s.push({root, root->val});
+ while (!s.empty()) {
+ TreeNode *curr = s.top().first;
+ int total = s.top().second;
+ s.pop();
+ if (curr->right)
+ s.push({curr->right, total + curr->right->val});
+ if (curr->left)
+ s.push({curr->left, total + curr->left->val});
+ if (!curr->right && !curr->left && total == targetSum)
+ return true;
+ }
+ return false;
+ }
+};