leetcode337打家劫舍III

2021-08-18 23:07:05 字數 1138 閱讀 9906

不搶劫該節點,則可以搶劫該節點的左右字節點(注意,node節點不搶不意味著一定要搶它的左右子結點,所以在方法中應該呼叫rob方法,而不是robinclude方法)

public int robexclude(treenode node)

return rob(node.left) + rob(node.right);

}搶劫該節點的話就不能搶劫該節點的左右子節點,所以應該呼叫robexclude(node.right) + robexclude(node.left) + 該節點的值

public int robinclude(treenode node) 

return robexclude(node.right) + robexclude(node.left) + node.val;

}最後統一呼叫rob方法來獲取能搶劫的最大值,那就有兩種選擇,搶劫根節點和不搶劫根節點

所以

public int rob(treenode root) 

return math.max(robexclude(root), robinclude(root));

}

選取最大的那個方案就是能打劫的最多的值。

**:class treenode

}class solution

return math.max(robexclude(root), robinclude(root));

}public int

robexclude(treenode node)

return rob(node.left) + rob(node.right);

}public int

robinclude(treenode node)

return robexclude(node.right) + robexclude(node.left) + node.val;}

}小偷又發現乙個新的可行竊的地點。 這個地區只有乙個入口,稱為「根」。 除了根部之外,每棟房子有且只有乙個父房子。 一番偵察之後,聰明的小偷意識到「這個地方的所有房屋形成了一棵二叉樹」。 如果兩個直接相連的房子在同一天晚上被打劫,房屋將自動報警。

在不觸動警報的情況下,計算小偷一晚能盜取的最高金額。

LeetCode337 打家劫舍

在上次打劫完一條街道之後和一圈房屋後,小偷又發現了乙個新的可行竊的地區。這個地區只有乙個入口,我們稱之為 根 除了 根 之外,每棟房子有且只有乙個 父 房子與之相連。一番偵察之後,聰明的小偷意識到 這個地方的所有房屋的排列類似於一棵二叉樹 如果兩個直接相連的房子在同一天晚上被打劫,房屋將自動報警。計...

Leetcode 337 打家劫舍 III

在上次打劫完一條街道之後和一圈房屋後,小偷又發現了乙個新的可行竊的地區。這個地區只有乙個入口,我們稱之為 根 除了 根 之外,每棟房子有且只有乙個 父 房子與之相連。一番偵察之後,聰明的小偷意識到 這個地方的所有房屋的排列類似於一棵二叉樹 如果兩個直接相連的房子在同一天晚上被打劫,房屋將自動報警。計...

leetcode337 打家劫舍 III

在上次打劫完一條街道之後和一圈房屋後,小偷又發現了乙個新的可行竊的地區。這個地區只有乙個入口,我們稱之為 根 除了 根 之外,每棟房子有且只有乙個 父 房子與之相連。一番偵察之後,聰明的小偷意識到 這個地方的所有房屋的排列類似於一棵二叉樹 如果兩個直接相連的房子在同一天晚上被打劫,房屋將自動報警。計...