337. 打家劫舍 III
一:前序遍历
1、直接遍历:超时
class Solution:
def rob(self, root: TreeNode) -> int:
if root==None:
return 0
#抢root,然后去下下家
if root.left == None and root.right == None: #左右都为空
do = root.val
elif root.left == None: #只有左边为空
do = root.val + self.rob(root.right.left) + self.rob(root.right.right)
elif root.right == None: # 只有右边为空
do = root.val + self.rob(root.left.left) + self.rob(root.left.right)
else: #都不为空
do = root.val + self.rob(root.left.left) + self.rob(root.left.right) + self.rob(root.right.left) + self.rob(root.right.right)
#不抢,然后去下家
not_do = self.rob(root.left) + self.rob(root.right)
res =max(do, not_do)
return res2、使用备忘录
最后更新于