【力扣-每日一题】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);
    }
};
相关推荐
sali-tec15 小时前
C# 基于halcon的视觉工作流-章66 四目匹配
开发语言·人工智能·数码相机·算法·计算机视觉·c#
小明说Java15 小时前
常见排序算法的实现
数据结构·算法·排序算法
行云流水201916 小时前
编程竞赛算法选择:理解时间复杂度提升解题效率
算法
smj2302_7968265218 小时前
解决leetcode第3768题.固定长度子数组中的最小逆序对数目
python·算法·leetcode
cynicme18 小时前
力扣3531——统计被覆盖的建筑
算法·leetcode
core51219 小时前
深度解析DeepSeek-R1中GRPO强化学习算法
人工智能·算法·机器学习·deepseek·grpo
mit6.82419 小时前
计数if|
算法
a伊雪19 小时前
c++ 引用参数
c++·算法
圣保罗的大教堂20 小时前
leetcode 3531. 统计被覆盖的建筑 中等
leetcode