打家劫舍二叉树Python
时间: 2023-12-25 13:29:59 浏览: 27
以下是一个用Python解决打家劫舍二叉树问题的示例:
```python
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def rob(root):
def helper(node):
if not node:
return (0, 0)
left = helper(node.left)
right = helper(node.right)
# 偷当前节点的金额
rob_value = node.val + left[1] + right[1]
# 不偷当前节点的金额
not_rob_value = max(left) + max(right)
return (rob_value, not_rob_value)
return max(helper(root))
# 创建一个二叉树
root = TreeNode(3)
root.left = TreeNode(2)
root.right = TreeNode(3)
root.left.right = TreeNode(3)
root.right.right = TreeNode(1)
# 调用函数计算最大金额
result = rob(root)
print("最大金额为:", result) # 输出:7
```