题目描述:

方法一:递归

# 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 = None

cache = {}
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

leetcode-337-打家劫舍三*相关推荐

  1. LeetCode 337. 打家劫舍 III(记忆化+递归)

    文章目录 1. 题目 1.1 相关题目: 2. 解题 2.1 递归 2.2 记忆化递归 1. 题目 在上次打劫完一条街道之后和一圈房屋后,小偷又发现了一个新的可行窃的地区.这个地区只有一个入口,我们称 ...

  2. 104. Leetcode 337. 打家劫舍 III (动态规划-打家劫舍)

    步骤一.确定递归函数的参数和返回值: dp数组及下标的含义 dp数组的长度为2, 下标为0记录不偷该节点所得到的的最大金钱,下标为1记 录偷该节点所得到的的最大金钱. 步骤二.确定终止条件: 在遍历的 ...

  3. leetcode —— 337. 打家劫舍 III

    在上次打劫完一条街道之后和一圈房屋后,小偷又发现了一个新的可行窃的地区.这个地区只有一个入口,我们称之为"根". 除了"根"之外,每栋房子有且只有一个" ...

  4. [leetcode] 337.打家劫舍3

    在上次打劫完一条街道之后和一圈房屋后,小偷又发现了一个新的可行窃的地区.这个地区只有一个入口,我们称之为"根". 除了"根"之外,每栋房子有且只有一个" ...

  5. LeetCode 198. 打家劫舍(DP)

    1. 题目 你是一个专业的小偷,计划偷窃沿街的房屋.每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警. 给 ...

  6. leetcode 337. House Robber III | 337. 打家劫舍 III(树形dp;什么情况下dp需要强制包含当前元素?)

    题目 https://leetcode.com/problems/house-robber-iii/ 思考:什么情况下 dp 需要强制包含当前元素? dp 过程中,需要包含当前元素 的例子: leet ...

  7. 代码随想录Day48|198.打家劫舍、213.打家劫舍II、337.打家劫舍III

    文章目录 198.打0家劫舍 213.打家劫舍II 337.打家劫舍III 198.打0家劫舍 文章讲解:代码随想录 (programmercarl.com) 题目链接:198. 打家劫舍 - 力扣( ...

  8. Leetcode_打家劫舍三道题(动态规划总结)

    Leetcode_打家劫舍三道题(动态规划总结) 分类专栏: Leetcode # 动态规划 文章标签: 动态规划 leetcode 算法 LeetCode198 打家劫舍 leetCode213 打 ...

  9. leetcode No.15-16 三数之和相关问题

    leetcode 15. 三数之和 题目 链接:https://leetcode-cn.com/problems/3sum 给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 ...

  10. leetcode 198打家劫舍

    leetcode 198打家劫舍 题目链接:打家劫舍 题目描述:你是一个专业的小偷,计划偷窃沿街的房屋.每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间 ...

最新文章

  1. ICML 2019接受论文:清华、北大领跑,谷歌强压枝头,BAT略显“低调”
  2. android中xml文件的生成与读取(Pull)
  3. std::move C++11 标准新特性: 右值引用与转移语义
  4. HBase数据存储格式
  5. if _name_ == _main_
  6. error while loading shared libraries: xxx.so.x 错误的原因和解决办法
  7. python绝对值函数偏码_绝对值python
  8. 安卓 App 库存系统开发 基础版本
  9. daily news新闻阅读客户端应用源码(兼容iPhone和iPad)
  10. jenkins教程菜鸟_Jenkins插件编译
  11. java中springmvc_java框架之springmvc
  12. python 词表里的词不符合_【NLP】词表太大怎么办—Adaptive softmax模型和代码解析...
  13. oracle设置系统权限,Oracle数据库权限管理
  14. 嵌入式 Web Server 温度检测系统
  15. 欢迎来到Wagtail的文档
  16. Android使用BottomNavigationView+NavigationUI报错
  17. win7浏览器主页修改不过来_win7无法修改ie浏览器主页的解决方法
  18. 有位程序员写了部「修仙小说版」编程教程,网友:蚌埠住了 ....
  19. 计算机键盘打不出字来了,电脑键盘打不出来字怎么办?
  20. css3 3d特效汇总

热门文章

  1. Java之java.lang.CloneNotSupportedException,Java中bean的克隆报错
  2. 记一次spring MVC项目后台重构(持续更新)
  3. c语言用三目运算符从小到大排列,错题集
  4. Ubuntu安装RabbitMQ及RabbitMQ基于使用
  5. 机器博弈 (四)博弈规则的设计
  6. vue中遇到的问题:Error: Cannot find module 'chalk'
  7. Linux下Shell脚本运行程序不输出日志到终端
  8. Jquery中拿到相同的对应的所有的标签
  9. x264_param_default分析
  10. day18 8.jdbc中设置事务隔离级别