我们想起来刚才我们写的打家劫舍的题目,和这道题的思想差不多,只不过一个是数组一个是二叉树。我们很快就能写出来下面的代码。和打家劫舍
的思路一样。
var rob = function(root) {
function dfs(root){
if(!root)return [0,0];
const l = dfs(root.left);
const r = dfs(root.right);
const selected = root.val + l[1] + r[1];
const noSelected = Math.max(l[0],l[1]) + Math.max(r[0],r[1]);
return [selected,noSelected];
}
const result = dfs(root);
return Math.max(result[0],result[1]);
};