【力扣-每日一题】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);
    }
};
相关推荐
高山上有一只小老虎1 小时前
字符串字符匹配
java·算法
愚润求学1 小时前
【动态规划】专题完结,题单汇总
算法·leetcode·动态规划
林太白2 小时前
跟着TRAE SOLO学习两大搜索
前端·算法
ghie90902 小时前
图像去雾算法详解与MATLAB实现
开发语言·算法·matlab
云泽8082 小时前
从三路快排到内省排序:探索工业级排序算法的演进
算法·排序算法
weixin_468466853 小时前
遗传算法求解TSP旅行商问题python代码实战
python·算法·算法优化·遗传算法·旅行商问题·智能优化·np问题
·白小白3 小时前
力扣(LeetCode) ——43.字符串相乘(C++)
c++·leetcode
FMRbpm3 小时前
链表5--------删除
数据结构·c++·算法·链表·新手入门
程序员buddha3 小时前
C语言操作符详解
java·c语言·算法
John_Rey3 小时前
API 设计哲学:构建健壮、易用且符合惯用语的 Rust 库
网络·算法·rust