【力扣-每日一题】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);
    }
};
相关推荐
fengfuyao9852 分钟前
基于局部均值分解(LMD)的MATLAB信号分解程序实现
算法·matlab·均值算法
㓗冽2 分钟前
分割数字并排序(字符串)-基础题103th + A == B ?(字符串)-基础题104th + 母牛制造的回文(字符串)-基础题105th
算法
问好眼18 分钟前
《算法竞赛进阶指南》0x01 位运算-4.最短Hamilton路径
c++·算法·动态规划·位运算·信息学奥赛
苦藤新鸡19 分钟前
65.搜索平移数组的最小值
算法·leetcode
载数而行52021 分钟前
算法系列5之交换排序
c语言·数据结构·c++·算法·排序算法
重生之后端学习21 分钟前
35. 搜索插入位置
java·数据结构·算法·leetcode·职场和发展·深度优先
Frostnova丶22 分钟前
(1)LeetCode 1. 两数之和
leetcode·哈希算法
程序员南飞30 分钟前
算法笔试-求一个字符串的所有子串
java·开发语言·数据结构·python·算法·排序算法
陆嵩34 分钟前
从一个小例子实践代数多重网格方法
算法·amg·多重网格·粗化·插值算子·光滑·v cycle
清水白石00840 分钟前
模板方法模式全解析:用抽象基类定义算法骨架,让子类优雅填充细节
数据库·python·算法·模板方法模式