diff options
Diffstat (limited to 'other/path_sum.cpp')
-rw-r--r-- | other/path_sum.cpp | 23 |
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; + } +}; |