From 22eb686d254334cd4136f52345941effc860c4fb Mon Sep 17 00:00:00 2001 From: crupest Date: Fri, 2 Oct 2020 22:23:55 +0800 Subject: Add problem paths-with-sums-lcci. --- cpp/paths-with-sums-lcci.cpp | 46 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 cpp/paths-with-sums-lcci.cpp diff --git a/cpp/paths-with-sums-lcci.cpp b/cpp/paths-with-sums-lcci.cpp new file mode 100644 index 0000000..697182d --- /dev/null +++ b/cpp/paths-with-sums-lcci.cpp @@ -0,0 +1,46 @@ +#include + +struct TreeNode +{ + int val; + TreeNode *left; + TreeNode *right; + TreeNode(int x) : val(x), left(NULL), right(NULL) {} +}; + +#include + +class Solution +{ +public: + std::vector current; + + int dfs(TreeNode *root, int sum) + { + if (root == nullptr) + return 0; + + current.push_back(root->val); + + int s = 0; + int count = 0; + + for (auto iter = current.crbegin(); iter != current.crend(); ++iter) + { + s += *iter; + if (s == sum) + count++; + } + + count += dfs(root->left, sum) + dfs(root->right, sum); + + current.pop_back(); + + return count; + } + + int pathSum(TreeNode *root, int sum) + { + return dfs(root, sum); + } +}; -- cgit v1.2.3