当前位置: 首页 > news >正文

LeetCode 337:打家劫舍 III(House Robber III)—— 题解 ✅

LeetCode 337:打家劫舍 III(House Robber III)—— 题解 ✅

📖 内容概要

在上次打家劫舍的基础上,小偷发现了一个新的可行区域:
二叉树结构的房屋
如果直接相连的节点(父节点和子节点)在同一晚被闯入,系统会自动报警。

求在不触动警报的前提下,一夜之间能够偷窃到的最高金额

✅ 树形 DP
✅ 后序遍历(自底向上)
✅ 打家劫舍系列第三题


💡 解题思路(核心)

一、关键难点

  • 房屋不再是线性或环形
  • 而是二叉树结构
  • 父子节点不能同时偷

二、状态定义(非常关键)

对于以root为根的树,返回两个值:

res[0] = 不偷 root 时,子树的最大金额 res[1] = 偷 root 时,子树的最大金额

三、状态转移(树形 DP)

✅ 偷当前节点
val2=root.val+left[0]+right[0];
  • 必须不能偷左右子节点

✅ 不偷当前节点
val1=max(left[0],left[1])+max(right[0],right[1]);
  • 左右子树自由选择最优方案

四、递归 + 后序遍历

先计算左子树 再计算右子树 最后合并当前节点

✅ 自底向上
✅ 无重复计算


✅ AC 代码(Java)

/** * Definition for a binary tree node. */classTreeNode{intval;TreeNodeleft;TreeNoderight;TreeNode(){}TreeNode(intval){this.val=val;}TreeNode(intval,TreeNodeleft,TreeNoderight){this.val=val;this.left=left;this.right=right;}}classSolution{publicintrob(TreeNoderoot){int[]res=help(root);returnMath.max(res[0],res[1]);}// 返回 [不偷当前节点的最大值, 偷当前节点的最大值]publicint[]help(TreeNoderoot){if(root==null){returnnewint[]{0,0};}int[]left=help(root.left);int[]right=help(root.right);// 不偷当前节点intval1=Math.max(left[0],left[1])+Math.max(right[0],right[1]);// 偷当前节点intval2=root.val+left[0]+right[0];returnnewint[]{val1,val2};}}

⏱️ 复杂度分析

指标复杂度
时间复杂度O(n)(每个节点只访问一次)
空间复杂度O(h)(递归栈,h 为树高)

🔍 打家劫舍三部曲对比

题目结构解法
198线性街道一维 DP
213环形拆环为链
337二叉树树形 DP

✅ 一句话总结

树形 DP = 后序遍历 + 每个节点返回“偷 / 不偷”两种状态的最大值。


📌 面试加分点(建议记住)

  • ✅ 为什么返回数组而不是单个值?
  • ✅ 为什么是后序遍历?
  • ✅ 如何把树形 DP 抽象成状态机?
  • ✅ 与记忆化搜索的关系
http://www.gsyq.cn/news/1476014.html

相关文章:

  • Python基础:字符串索引与切片操作完全指南
  • 昇腾CANN集群通信库hcomm:多机分布式训练的NCCL兼容通信方案
  • 【限时可复刻】CSDN AI+内容裂变+线索评分三步法:让咨询量暴涨210%的招生闭环(附配置参数表)
  • VidDown:免费视频解析下载 + 开发工具箱
  • 从零构建51单片机最小系统:原理、设计与调试全攻略
  • 从兼职工程师到行业认知:电源设计、3C认证与MCU选型的实战教训
  • 冷门技术内容冷启动难?用CSDN AI做选题挖掘,3步锁定高转化低竞争蓝海选题,错过再等半年!
  • SysDVR技术深度解析:Switch游戏实时串流架构设计与应用实战
  • 纯亚克力浴缸专业公司
  • CANopen协议实战指南:从总线原理到工程调试全解析
  • 智能时代工程师如何应对技术迭代与信息茧房挑战
  • Allegro高速PCB设计:Xnet创建与差分对等长约束实战指南
  • 仪器厂选型干货|实测多款串口屏,这家产品凭品质和交期脱颖而出
  • 如何用Zotero-Better-Notes实现智能笔记管理:3步快速上手指南
  • 书匠策AI官网www.shujiangce.com:论文党的“深夜急救箱“,期刊论文功能全拆解!
  • 鸣潮玩家如何用5小时完成50小时重复操作?ok-ww后台自动化实战指南
  • 【嵌入式必知】同步通信与异步通信
  • 第2周学习笔记
  • 【CSDN AI营销卡片深度拆解】:20年SEO老兵实测37篇对比数据,它真会稀释自然推荐权重吗?
  • ai辅助开发实践:借助快马智能生成应对instagram复杂页面结构的下载工具
  • 港澳通行证照片底色怎么弄?2026年手把手教程+换底色软件推荐
  • 2026合肥黄金回收测评指南|黄金首饰回收渠道深度对比盘点 - 资讯速览
  • 模具制造:从工业之母到手机外壳的生存逻辑与挑战
  • YOLO26自适应注意力魔改:让模型在训练中自动决定选用通道还是空间注意力
  • 百草枯农药残留检测卡快速检测果蔬中的百草枯农药残留
  • 终极Sketch标注插件:Sketch MeaXure完整指南,让设计交付效率提升300%
  • 从DAG到值编码:手把手教你用Python可视化编译原理中的表达式优化过程
  • 利用快马平台快速生成串口调试助手原型,十分钟搞定嵌入式通信测试工具
  • 2026甄选:涉密资质服务公司核心能力与适配性分析 - 品牌企业推荐师(官方)
  • PDF转Excel/PPT/图片及压缩,2026年度免费工具横评:速度、精度、隐私安全全对比 - 时时资讯