# 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 dfs(node):
# 不选的结果,选的结果
if not node:
return [0,0]
left = dfs(node.left)
right = dfs(node.right)
# 选择 就是左子树不选的结果+右子树不选的结果
choose = node.val + left[0] + right[0]
# 不选择 从子节点中选,比如左节点可以选择也可以不选择+右节点也可以选择不选择
not_choose = max(left[0],left[1])+max(right[0],right[1])
return [not_choose,choose]
res = dfs(root)
return max(res[0],res[1])
2021-08-06 | 337. 打家劫舍 III 【二叉树跨层求路径最大和】
最新推荐文章于 2024-03-25 23:02:46 发布