【力扣-每日一题】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);
    }
};
相关推荐
奋发向前wcx2 小时前
CSP-J复赛模拟赛4 王晨旭补题 2026.10.5
算法
念何架构之路4 小时前
zap采样器与性能优化内幕
算法·性能优化·哈希算法
晒太羊的猫5 小时前
hot100动态规划刷题
算法·动态规划
weixin_531094695 小时前
heap_4内存管理
java·开发语言·算法
余额瞒着我当琳5 小时前
红黑树的实现--红黑树的概念、规则、效率、结构、旋转、查找、验证
数据结构·c++·算法
程序员南飞5 小时前
win系统安装minio
java·数据结构·算法
青少儿编程课堂6 小时前
AC自动机多模式串匹配精讲:校园关键词巡检实战解析
c++·python·算法·bfs·信息学竞赛
longlongzihan6 小时前
LeetCode 5. 最长回文子串:从暴力匹配到中心扩展的思维演进
c++·算法·leetcode
waoooqwe6 小时前
问卷样本真实吗
大数据·数据库·算法·数据分析
苦瓜打怪兽6 小时前
leetcode 热题100(11. 盛最多水的容器)
python·算法·leetcode