题目
![在这里插入图片描述](https://img-blog.csdnimg.cn/d5a45d0e5d374d7480c54a7ec3fa0c48.png?)
解题
![在这里插入图片描述](https://img-blog.csdnimg.cn/44cb22af248046f4a6e05f274e3fa9ec.png?)
var rob = function(root) {
const f = new Map();
const g = new Map();
const dfs = (root) => {
if (root === null) return;
dfs(root.left);
dfs(root.right);
f.set(root, root.val + (g.get(root.left) || 0) + (g.get(root.right) || 0));
g.set(root, Math.max(f.get(root.left) || 0, g.get(root.left) || 0) + Math.max(f.get(root.right) || 0, g.get(root.right) || 0));
};
dfs(root);
return Math.max(f.get(root) || 0, g.get(root) || 0);
};
![在这里插入图片描述](https://img-blog.csdnimg.cn/7f46931887694158a11e138c780ba057.png)
var rob = function(root) {
const dfs = (root) => {
if (root === null) return [0, 0];
const [lSelected, lNoSelected] = dfs(root.left);
const [rSelected, rNoSelected] = dfs(root.right);
const selected = root.val + lNoSelected + rNoSelected;
const noSelected = Math.max(lSelected, lNoSelected) + Math.max(rSelected, rNoSelected);
return [selected, noSelected];
};
const rootStatus = dfs(root);
return Math.max(...rootStatus);
};
![在这里插入图片描述](https://img-blog.csdnimg.cn/f4184bd9568a4a11aec0bc4b9f763dab.png)