1339. Maximum Product of Splitted Binary Tree
给予你一个二元树,求出把该树拆分成两个树之后,该两个树的所有元素和的最大乘积
(因为数字很大,所以返回值要模[10^9+ 7])
Example:
https://assets.leetcode.com/uploads/2020/01/21/sample_1_1699.png
Input: root = [1,2,3,4,5,6]
Output: 把树拆成 t1 = [4,2,5] 和 t2 = [1,null,3,6] sum(t1) = 11 sum(t2) = 10
该两数相乘会是最大的积。
思路:
1.因为要将树拆成两个和,我们可以透过 整个树的和total 减去 当前节点root 来得到
把树分成两堆后两个树分别的和。
2.dfs每一个节点并计算两堆树的内积并更新最大数值。
3.因为太多getSum()的重复计算吃了TLE,所以用了一个 Map来Memoization。
Java Code: