难度:中等

整体思路相当于是前两天的方法倒过来,毕竟二叉树最常用的解法就是递归倒推
代码:
class Solution:
def rob(self, root: Optional[TreeNode]) -> int:
def crob(root):
if root == None:
return 0, 0
yl, nl = crob(root.left)
yr, nr = crob(root.right)
return nl + nr + root.val, max(yl, nl) + max(yr, nr)
return max(crob(root))