Medium
思路其实不是很复杂,只要能想到那个点。
以上,尝试写一下代码,TLE。
使用记忆化递归优化,减少重复计算,AC!
python3
class Solution:
@functools.lru_cache(None)
def helper(self,node):
if node is None:
return 0
#打劫根
v1 = node.val
if node.left:
v1 += self.helper(node.left.left) + self.helper(node.left.right)
if node.right:
v1 += self.helper(node.right.left) + self.helper(node.right.right)
#不打劫根
v2 = self.helper(node.left) + self.helper(node.right)
return max(v1,v2)
def rob(self, root: TreeNode) -> int:
return self.helper(root)