【力扣-每日一题】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);
    }
};
相关推荐
菜鸟丁小真16 小时前
LeetCode hot100-79.单词搜索
数据结构·算法·leetcode·深度优先·知识总结
WL_Aurora16 小时前
排序算法(二)
java·算法·排序算法
Tisfy16 小时前
LeetCode 2833.距离原点最远的点:计数
算法·leetcode·字符串·题解·模拟·计数
浅念-16 小时前
LeetCode 模拟算法:用「还原过程」搞定编程题的入门钥匙
开发语言·c++·学习·算法·leetcode·职场和发展·模拟
圣保罗的大教堂16 小时前
leetcode 1722. 执行交换操作后的最小汉明距离 中等
leetcode
t-think16 小时前
操作符详解-C语言(下)
c语言·算法
阿Y加油吧16 小时前
算法二刷复盘|旋转排序数组二分双杀(LeetCode 33 & 153)
算法·leetcode·职场和发展
skywalker_1116 小时前
力扣hot100(9-找到字符串中所有字母异位词;10-和为K的子数组)
算法·leetcode·职场和发展
无敌昊哥战神16 小时前
【LeetCode 491】递增子序列:不能排序怎么去重?一文讲透“树层去重”魔法!
c语言·c++·python·算法·leetcode
阿Y加油吧16 小时前
算法二刷复盘|LeetCode 34&74 二分查找双杀(区间边界 + 二维矩阵)
算法·leetcode·矩阵