class Solution {
public:
vector<int> helper(TreeNode* curNode){
//0 represents Dont steal curNode
//1 represents steal curNode
if(curNode == nullptr)
return vector<int>{0, 0};
vector<int> leftDP = helper(curNode->left);
vector<int> rightDP = helper(curNode->right);
//steal root
int value1 = curNode->val + leftDP[0] + rightDP[0];
//Dont steal root
int value2 = max(leftDP[0], leftDP[1]) + max(rightDP[0], rightDP[1]);
return vector<int>{value2, value1};
}
int rob(TreeNode* root) {
vector<int> res = helper(root);
return max(res[0], res[1]);
}
};
LeetCode337.打家劫舍 III
最新推荐文章于 2024-09-14 22:25:23 发布