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

(LeetCode 动态规划(基础版) )337. 打家劫舍 III (深度优先搜索dfs)

题目:337. 打家劫舍 III

在这里插入图片描述
在这里插入图片描述

思路:深度优先搜索dfs,时间复杂度0(n)。

每个节点,都有选和不选的权利,但选的话,当前子树的左右节点都不能选。细节看注释

C++版本:

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode() : val(0), left(nullptr), right(nullptr) {}*     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}*     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/
class Solution {
public://以root为根的子树,选or不选pair<int,int> dfs(TreeNode * root){if(root==nullptr) return {0,0};pair<int,int> left=dfs(root->left);pair<int,int> right=dfs(root->right);// 选int t1=root->val+left.second+right.second;// 不选int t2=max(left.first,left.second)+max(right.first,right.second);return {t1,t2};}int rob(TreeNode* root) {pair<int,int> p=dfs(root);return max(p.first,p.second);}
};

JAVA版本:

/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode() {}*     TreeNode(int val) { this.val = val; }*     TreeNode(int val, TreeNode left, TreeNode right) {*         this.val = val;*         this.left = left;*         this.right = right;*     }* }*/
class Solution {int[] dfs(TreeNode root){if(root==null){return new int[]{0,0};}int[] left=dfs(root.left);int[] right=dfs(root.right);//选int t1=left[1]+right[1]+root.val;// 不选int t2=Math.max(left[0],left[1])+Math.max(right[0],right[1]);return new int[]{t1,t2};}public int rob(TreeNode root) {int[] ans=dfs(root);return Math.max(ans[0],ans[1]);}
}

Go版本:

/*** Definition for a binary tree node.* type TreeNode struct {*     Val int*     Left *TreeNode*     Right *TreeNode* }*/
func rob(root *TreeNode) int {t1,t2:=dfs(root)return max(t1,t2)
}
func dfs(root *TreeNode) (int,int) {if root == nil {return 0,0}left_ok,left_no := dfs(root.Left)right_ok,right_no := dfs(root.Right)// 选t1:=root.Val + left_no + right_no// 不选t2:= max(left_ok,left_no)+max(right_ok,right_no)return t1,t2
}
http://www.xdnf.cn/news/13587.html

相关文章:

  • 智慧医疗能源事业线深度画像分析(下)
  • window 显示驱动开发-创建视频处理设备
  • android studio底部导航栏
  • Windows 上安装 devsidecar 后,使用 WSL ubuntu ssl 报错
  • redisson锁的可重入、可重试、超时续约原理详解
  • npm包 本地测试流程
  • 软件测试之单元测试详解
  • 2025年5月一区SCI-状态优化算法Status-based Optimization-附Matlab免费代码
  • 闸门远程控制系统的主要功能有哪些?
  • LeetCode-多语言实现冒泡排序以及算法优化改进
  • 数据可视化新姿势:Altair的声明式魔法
  • Ubuntu+k3s+karmada离线安装部署说明
  • shell正则表达式
  • GFS分布式文件系统
  • 汽车电子行业的高效研发利器——全星研发项目管理APQP软件系统
  • 中国汽车启动电池市场深度剖析:现状、趋势与展望
  • Linux 查看两个主机之间时间是否同步 - clockdiff命令详解
  • 前端面试六之axios
  • 408考研逐题详解:2009年第38题
  • 【Kubernetes】架构与原理:核心概念、组件协同及容器化部署解析
  • 【考研数学:高数6】一元函数微分学的应用(二)——中值定理、微分等式和微分不等式
  • 鼠标右键添加新建某种文件的方法
  • Go并发模型与模式:context 上下文控制
  • 01.pycharm整合conda
  • 华为OD最新机试真题-对称美学-OD统一考试(B卷)
  • WinForm中实现Adobe PDF Reader实现旋转PDF功能
  • opencv vs2020正确的环境配置
  • 《HarmonyOSNext终极UIAbility手册:从启动模式到页面跳转,一网打尽!》
  • 菌菇食用攻略:从营养解析到安全指南,解锁科学食菌
  • 【JavaEE】-- HTTPS