博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
leetcode-337-打家劫舍三*
阅读量:5104 次
发布时间:2019-06-13

本文共 1341 字,大约阅读时间需要 4 分钟。

题目描述:

 方法一:递归

# Definition for a binary tree node.# class TreeNode(object):#     def __init__(self, x):#         self.val = x#         self.left = None#         self.right = Noneclass Solution(object):    def rob(self, root):        """        :type root: TreeNode        :rtype: int        """        def postorder(root):             if root == None:                 return (0,0)             l = postorder(root.left)             r = postorder(root.right)             return (root.val+l[1]+r[1] , max(l[0], l[1])+ max( r[0], r[1]))         r = postorder(root)         return max(r[0],r[1])

另:

# Definition for a binary tree node.# class TreeNode(object):#     def __init__(self, x):#         self.val = x#         self.left = None#         self.right = Nonecache = {} def max_with_root(node):     return node.val + max_without_root(node.left) + max_without_root(node.right) if node else 0 def max_without_root(node):     return helper(node.left) + helper(node.right) if node else 0 def helper(node):     if node in cache: return cache[node]     cache[node] = max(max_with_root(node), max_without_root(node)) if node else 0     return cache[node] class Solution(object):     def rob(self, root):         """        :type root: TreeNode        :rtype: int        """         return helper(root)

 

转载于:https://www.cnblogs.com/oldby/p/11219004.html

你可能感兴趣的文章
Ugly Windows
查看>>
DataGridView的行的字体颜色变化
查看>>
java.nio异步线程安全的IO
查看>>
(网上摘抄)云标签
查看>>
记录-时间日期
查看>>
便签:
查看>>
JS function 函数基本定义方法
查看>>
Java再学习——关于ConcurrentHashMap
查看>>
bzoj3944 Sum
查看>>
后缀表达式/逆波兰表达式
查看>>
标准模板库中的优先队列(priority_queue)
查看>>
如何处理Win10电脑黑屏后出现代码0xc0000225的错误?
查看>>
局域网内手机访问电脑网站注意几点
查看>>
IT项目经验和难点分享
查看>>
那些黑刘翔的人,你们的良心被狗吃了
查看>>
TreeMap和TreeSet在排序时如何比较元素?Collections工具类中的sort()方法如何比较元素?...
查看>>
Redis系列--内存淘汰机制(含单机版内存优化建议)
查看>>
最小二乘法
查看>>
iptables端口转发
查看>>
金融三问
查看>>