From 185ef9fcb0e59f13e9ee0ccb261693cdaddebab0 Mon Sep 17 00:00:00 2001 From: crupest Date: Tue, 23 Feb 2021 21:07:19 +0800 Subject: import(solutions): Move leetcode solutions to subdir. --- works/solutions/leetcode/cpp/337.cpp | 38 ++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 works/solutions/leetcode/cpp/337.cpp (limited to 'works/solutions/leetcode/cpp/337.cpp') 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 + +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