【力扣-每日一题】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);
    }
};
相关推荐
8Qi8几秒前
LeetCode热题100--45.跳跃游戏 II
java·算法·leetcode·贪心算法·编程
foundbug99930 分钟前
基于STM32的步进电机加减速程序设计(梯形加减速算法)
stm32·单片机·算法
北顾笙9801 小时前
day12-数据结构力扣
数据结构·算法·leetcode
凌波粒1 小时前
LeetCode--454.四数相加 II(哈希表)
算法·leetcode·散列表
漫随流水1 小时前
c++编程:D进制的A+B(1022-PAT乙级)
数据结构·c++·算法
tankeven1 小时前
HJ159 没挡住洪水
c++·算法
美式请加冰1 小时前
斐波那契数列介绍和使用
算法
paeamecium2 小时前
【PAT】 - Course List for Student (25)
数据结构·c++·算法·pat考试
wen__xvn2 小时前
力扣洛谷模拟题刷题2
算法·leetcode·职场和发展
漫随流水2 小时前
c++编程:说反话(1009-PAT乙级)
数据结构·c++·算法