X-337-house-robber-3
int dfs(TreeNode* currentNode, bool isPassRow) {
int result = 0;
if(currentNode == NULL) {
return 0;
}
if(isPassRow) {
// cout<<"currentNode->val: "<<currentNode->val<<endl;
result += currentNode->val;
// cout<<"result: "<<result<<endl;
}
//left
result += dfs(currentNode->left, !isPassRow);
//right
result += dfs(currentNode->right, !isPassRow);
// cout<<"result: "<<result<<endl;
return result;
}
int rob(TreeNode* root) {
// root 선택 : 홀수 row
// int result = 0;
// cout<<result<<endl;
int r = dfs(root, true);
int l = dfs(root, false);
if(r > l) {
return r;
}
return l;
// cout<<"r : "<<r<<endl;
// root 미선택 : 짝수 row
// return r;
}Last updated
Was this helpful?