aboutsummaryrefslogtreecommitdiff
path: root/works/solutions/leetcode/cpp/337.cpp
diff options
context:
space:
mode:
authorYuqian Yang <crupest@crupest.life>2025-02-12 15:55:21 +0800
committerYuqian Yang <crupest@crupest.life>2025-02-12 16:04:50 +0800
commit77e6cdc863d2cbd9df578a665804daf28d8593fe (patch)
tree62c9f3e071d8d1d6fe125fe801907db11784332e /works/solutions/leetcode/cpp/337.cpp
parent10eb95869601e145b1d8bc909424777c25752d51 (diff)
parenta557fa36a22c5ef4a29da596ee1e3aa10be55984 (diff)
downloadcrupest-77e6cdc863d2cbd9df578a665804daf28d8593fe.tar.gz
crupest-77e6cdc863d2cbd9df578a665804daf28d8593fe.tar.bz2
crupest-77e6cdc863d2cbd9df578a665804daf28d8593fe.zip
import(solutions): IMPORT crupest/solutions COMPLETE.
Diffstat (limited to 'works/solutions/leetcode/cpp/337.cpp')
-rw-r--r--works/solutions/leetcode/cpp/337.cpp38
1 files changed, 38 insertions, 0 deletions
diff --git a/works/solutions/leetcode/cpp/337.cpp b/works/solutions/leetcode/cpp/337.cpp
new file mode 100644
index 0000000..655a4d0
--- /dev/null
+++ b/works/solutions/leetcode/cpp/337.cpp
@@ -0,0 +1,38 @@
+#include <cstddef>
+
+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;
+ }
+};