【力扣-每日一题】337. 打家劫舍 III

cpp 复制代码
class Solution {
public:
    pair<int,int> dfs_rob(TreeNode *root){
        //如果为根节点
        if(root==nullptr)
            return {0,0};
        auto [l,l_n]=dfs_rob(root->left);
        auto [r,r_n]=dfs_rob(root->right);
        int o=l_n+r_n+root->val;//当前节点偷,所获得的利益,子节点不能偷
        int o_n=max(l,l_n)+max(r,r_n);  //当前节点不偷,左右子节点分别返回最大的值
        return {o,o_n};//返回当前节点偷、不偷情况下的最大利益
    }
    int rob(TreeNode* root) {
        auto [l,r]=dfs_rob(root);
        return max(l,r);
    }
};
相关推荐
MicroTech20251 分钟前
量子仿真新基石:MLGO微算法科技专用地址生成器驱动量子算法仿真革命
科技·算法·量子计算
WBluuue4 分钟前
数据机构与算法:dp优化——倍增优化
c++·算法·leetcode·动态规划
范纹杉想快点毕业15 分钟前
嵌入式实时系统架构设计:基于STM32与Zynq的中断、状态机与FIFO架构工程实战指南,基于Kimi设计
c语言·c++·单片机·嵌入式硬件·算法·架构·mfc
lovod16 分钟前
【视觉SLAM十四讲】建图
算法·视觉slam
SmartBrain22 分钟前
AI算法工程师面试:大模型和智能体知识(含答案)
人工智能·算法·语言模型·架构·aigc
孞㐑¥26 分钟前
算法—哈希表
开发语言·c++·经验分享·笔记·算法
近津薪荼42 分钟前
递归专题(2)——合并链表
c++·学习·算法·链表
Asher阿舍技术站42 分钟前
【数字通信理论系列】四、载波相位同步
算法·载波同步
圣保罗的大教堂43 分钟前
leetcode 3013. 将数组分成最小总代价的子数组 II 困难
leetcode
-Try hard-1 小时前
队列 | 二叉树
算法