【力扣-每日一题】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);
    }
};
相关推荐
m0_672703316 分钟前
上机练习第24天
算法
edisao41 分钟前
序幕-内部审计备忘录
java·jvm·算法
shehuiyuelaiyuehao1 小时前
22Java对象的比较
java·python·算法
Dev7z2 小时前
滚压表面强化过程中变形诱导位错演化与梯度晶粒细化机理的数值模拟研究
人工智能·python·算法
吴秋霖2 小时前
apple游客下单逆向分析
python·算法·逆向分析
YunchengLi4 小时前
【计算机图形学中的四元数】2/2 Quaternions for Computer Graphics
人工智能·算法·机器学习
CUC-MenG4 小时前
Codeforces Round 1079 (Div. 2)A,B,C,D,E1,E2,F个人题解
c语言·开发语言·数学·算法
666HZ6664 小时前
数据结构4.0 串
c语言·数据结构·算法
weixin_421585015 小时前
常微分方程
算法
文艺倾年5 小时前
【免训练&测试时扩展】通过任务算术转移思维链能力
人工智能·分布式·算法