class Solution: 遞歸 + 記憶化 class Solution:
class Solution: def rob(self, root: Optional[TreeNode]) -> int: def dfs(node):
if not node:
return (0, 0)
left = dfs(node.left)
right = dfs(node.right)
#rob current node: current value + not rob left + not rob right
rob = node.val + left[1] + right[1]
#not rob current node: max of left(rob or not) + max of right(rob or not)
not_rob = max(left[0], left[1]) + max(right[0], right[1])
return (rob, not_rob)
return max(dfs(root))
class TreeNode: def init(self, val=0, left=None, right=None):
class Solution: def rob(self, root: Optional[TreeNode]) -> int: def dfs(node): if not node: return (0,0) left_rob, left_not = dfs(node.left) right_rob, right_not = dfs(node.right) curr_rob = node.val + left_not + right_not curr_not = max(left_rob, left_not) + max(right_rob, right_not) return (curr_rob, curr_not) return max(dfs(root))
(免責聲明:本文為本網(wǎng)站出于傳播商業(yè)信息之目的進行轉(zhuǎn)載發(fā)布,不代表本網(wǎng)站的觀點及立場。本文所涉文、圖、音視頻等資料的一切權(quán)利和法律責任歸材料提供方所有和承擔。本網(wǎng)站對此資訊文字、圖片等所有信息的真實性不作任何保證或承諾,亦不構(gòu)成任何購買、投資等建議,據(jù)此操作者風險自擔。) 本文為轉(zhuǎn)載內(nèi)容,授權(quán)事宜請聯(lián)系原著作權(quán)人,如有侵權(quán),請聯(lián)系本網(wǎng)進行刪除。