1. 题目
2. 方法一
2.1. 代码
class Solution {
public:
int rob(TreeNode* root)
{
if(root==NULL) return 0;
int val1=root->val;
if(root->left!=NULL) val1+=rob(root->left->left)+rob(root->left->right);
if(root->right!=NULL) val1+=rob(root->right->left)+rob(root->right->right);
int val2=rob(root->left)+rob(root->right);
return max(val1,val2);
}
};
2.2. 结果
3. 方法二
加了一个hash表就可以用了。
3.1. 代码
class Solution {
public:
int rob(TreeNode* root)
{
if(root==NULL) return 0;
if(dict.count(root)!=0) return dict[root];
int val1=root->val;
if(root->left!=NULL) val1+=rob(root->left->left)+rob(root->left->right);
if(root->right!=NULL) val1+=rob(root->right->left)+rob(root->right->right);
int val2=rob(root->left)+rob(root->right);
dict[root]=max(val1,val2);
return max(val1,val2);
}
map<TreeNode*,int> dict;
};