|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- The thief has found himself a new place for his thievery again. There is only one entrance to this area, called the "root." Besides the root, each house has one and only one parent house. After a tour, the smart thief realized that "all houses in this place forms a binary tree". It will automatically contact the police if two directly-linked houses were broken into on the same night.
- Determine the maximum amount of money the thief can rob tonight without alerting the police.
- Example 1:
- Input: [3,2,3,null,3,null,1]
- 3
- / \
- 2 3
- \ \
- 3 1
- Output: 7
- Explanation: Maximum amount of money the thief can rob = 3 + 3 + 1 = 7.
- Example 2:
- Input: [3,4,5,1,3,null,1]
- 3
- / \
- 4 5
- / \ \
- 1 3 1
- Output: 9
- Explanation: Maximum amount of money the thief can rob = 4 + 5 = 9.
复制代码
- # 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:
- result = self.helper(root)
- return max(result)
-
- def helper(self, root: TreeNode) -> int:
- if root == None:
- return [0, 0]
- result = [0, 0]
- left = self.helper(root.left)
- right = self.helper(root.right)
- result[0] = max(left) + max(right)
- result[1] = left[0] + right[0] + root.val
- return result
复制代码 |
|