diff options
Diffstat (limited to 'max_product_split_bt.cpp')
-rw-r--r-- | max_product_split_bt.cpp | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/max_product_split_bt.cpp b/max_product_split_bt.cpp new file mode 100644 index 0000000..f363c0e --- /dev/null +++ b/max_product_split_bt.cpp @@ -0,0 +1,19 @@ +#include "leetcode.h" + +class Solution { +public: + int maxProduct(TreeNode *root) { + tot = solve(root), solve(root); + return ans % (int)(1e9 + 7); + } + +private: + long ans = 0, tot = 0, sub; + int solve(TreeNode *root) { + if (!root) + return 0; + sub = root->val + solve(root->left) + solve(root->right); + ans = max(ans, sub * (tot - sub)); + return sub; + } +}; |