From 99e2e923d0c77b02f3fb4ff648ea916954868606 Mon Sep 17 00:00:00 2001 From: Yuqian Yang Date: Fri, 28 Feb 2025 23:13:39 +0800 Subject: chore(store): move everything to store. --- store/works/solutions/leetcode/cpp/337.cpp | 38 ++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 store/works/solutions/leetcode/cpp/337.cpp (limited to 'store/works/solutions/leetcode/cpp/337.cpp') diff --git a/store/works/solutions/leetcode/cpp/337.cpp b/store/works/solutions/leetcode/cpp/337.cpp new file mode 100644 index 0000000..655a4d0 --- /dev/null +++ b/store/works/solutions/leetcode/cpp/337.cpp @@ -0,0 +1,38 @@ +#include + +struct TreeNode +{ + int val; + TreeNode *left; + TreeNode *right; + TreeNode(int x) : val(x), left(NULL), right(NULL) {} +}; + +struct SubTreeResult +{ + SubTreeResult(int use_root, int not_use_root) : use_root(use_root), not_use_root(not_use_root), max(use_root > not_use_root ? use_root : not_use_root) {} + + const int use_root; + const int not_use_root; + const int max; +}; + +class Solution +{ +public: + static SubTreeResult subtree_rob(TreeNode *root) + { + SubTreeResult left = root->left != NULL ? subtree_rob(root->left) : SubTreeResult{0, 0}; + SubTreeResult right = root->right != NULL ? subtree_rob(root->right) : SubTreeResult{0, 0}; + const auto use_root_value = root->val + left.not_use_root + right.not_use_root; + const auto not_use_root_value = left.max + right.max; + return SubTreeResult{use_root_value, not_use_root_value}; + } + + int rob(TreeNode *root) + { + if (root == NULL) + return 0; + return subtree_rob(root).max; + } +}; -- cgit v1.2.3