方法一:遞迴
超時!
class
solution
};
方法二:用雜湊表改進解決重複子問題,超時!
class
solution);
return res;
}public
:int
rob(treenode* root)
};
方法三:用乙個pair分別記錄包含根節點和不包含根節點時的最大值
class
solution
;auto left =
helper
(root-
>left)
;auto right =
helper
(root-
>right)
;return;}
public
:int
rob(treenode* root)
};
337 打家劫舍 III
思路 這是乙個典型的樹形dp問題,對每乙個節點都有兩種選擇 選他或者不選他。選他的話,那麼就不能選擇它的父節點 兄弟節點和子節點 不選這個節點,那麼就可以選擇該節點的左右子樹 選最大的 建立乙個dp表,令dp 0 表示選,dp 1 表示不選。class solution object def rob...
337 打家劫舍 III
在上次打劫完一條街道之後和一圈房屋後,小偷又發現了乙個新的可行竊的地區。這個地區只有乙個入口,我們稱之為 根 除了 根 之外,每棟房子有且只有乙個 父 房子與之相連。一番偵察之後,聰明的小偷意識到 這個地方的所有房屋的排列類似於一棵二叉樹 如果兩個直接相連的房子在同一天晚上被打劫,房屋將自動報警。計...
337 打家劫舍 III
在上次打劫完一條街道之後和一圈房屋後,小偷又發現了乙個新的可行竊的地區。這個地區只有乙個入口,我們稱之為 根 除了 根 之外,每棟房子有且只有乙個 父 房子與之相連。一番偵察之後,聰明的小偷意識到 這個地方的所有房屋的排列類似於一棵二叉樹 如果兩個直接相連的房子在同一天晚上被打劫,房屋將自動報警。計...