House Robber III
The thief has found himself a new place for his thievery again. There is only one entrance to this area, called the "root." Besides the root, each house has one and only one parent house. After a tour, the smart thief realized that "all houses in this place forms a binary tree". It will automatically contact the police if two directly-linked houses were broken into on the same night.
Determine the maximum amount of money the thief can rob tonight without alerting the police.
Example 1:
Input: [3,2,3,null,3,null,1]
3
/ \
2 3
\ \
3 1
Output: 7
Explanation: Maximum amount of money the thief can rob = 3 + 3 + 1 = 7.Example 2:
Input: [3,4,5,1,3,null,1]
3
/ \
4 5
/ \ \
1 3 1
Output: 9
Explanation: Maximum amount of money the thief can rob = 4 + 5 = 9.Analysis
前两题 I, II的变形升级,放置在Binary Tree中,但实际上还是一个DP问题。
LeetCode的这个讨论很详尽:https://leetcode.com/problems/house-robber-iii/discuss/79330/Step-by-step-tackling-of-the-problem?orderBy=most_votes
the two conditions for dynamic programming: "optimal substructure" + "overlapping of subproblems", we actually have a DP problem
递推关系在于是否取root,则对应left,right子树分别取或者不取。
Solution
DP with Memorization O(n) space cost (n is the total number of nodes; stack cost for recursion is not counted).
DP (0ms 100% AC)
Last updated
Was this helpful?