打家劫舍3

class Solution {

public:

pair<int,int> dfs(TreeNode* root) {

if(!root)return {0,0} ;

pair<int,int> l=dfs(root->left);

pair<int,int> r=dfs(root->right);

int choose=root->val+l.second+r.second;//如果选这个节点,那么他的子节点都不能选

int nochoose=max(l.first,l.second)+max( r.first,r.second);//如果不选,取子节点选与不选时得到的最大值

return {choose,nochoose};

}

int rob(TreeNode* root) {

pair<int,int>res=dfs(root);

return max(res.first,res.second);

}

};

相关推荐
csdn_aspnet2 小时前
PHP 算法 LeetCode 编号 70 - 爬楼梯
算法·leetcode·php
沈浩(种子思维作者)2 小时前
没有错误,正确将一文不值
人工智能·python·算法·量子计算
x_xbx2 小时前
LeetCode:5. 最长回文子串
算法·leetcode·职场和发展
快手技术2 小时前
免费报名|生成式推荐技术如何实现体系化演进?快手技术沙龙第四期开启!
算法
初夏睡觉2 小时前
数字截断求和 题解
算法
AZaLEan__2 小时前
多源 BFS
java·开发语言·算法
smith成长之旅2 小时前
07 | Mem0 框架分析:三路信号融合——语义 + BM25 + Entity Boost 的混合检索
python·算法
wabs6662 小时前
关于贪心算法章节的【有两个维度问题】的自我总结
算法·贪心算法
未若君雅裁3 小时前
算法复杂度与数据结构:Java 集合篇的第一块基石
java·数据结构·算法
春日见3 小时前
五分钟入门 强化学习---Q-Learning算法与实现
人工智能·python·深度学习·算法·机器学习·计算机视觉