力扣巧思题目-337. 打家劫舍 III
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:
def rob(self, root: TreeNode) -> int:
def rob_(root):
if not root:
return 0,0
left_select,left_not = rob_(root.left) #选择左节点的最大收益和不选左节点的最大收益
right_select,right_not = rob_(root.right)#选择右节点的最大收益和不选右节点的最大收益
return root.val + left_not + right_not, max(left_select,left_not)+max(right_select,right_not)
return max(rob_(root))