Skip to content

Commit 174b718

Browse files
Create 337. 打家劫舍 III.md
1 parent 9a51c02 commit 174b718

File tree

1 file changed

+77
-0
lines changed

1 file changed

+77
-0
lines changed
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
#### 337. 打家劫舍 III
2+
3+
难度:中等
4+
5+
---
6+
7+
小偷又发现了一个新的可行窃的地区。这个地区只有一个入口,我们称之为 `root` 。
8+
9+
除了 `root` 之外,每栋房子有且只有一个“父“房子与之相连。一番侦察之后,聪明的小偷意识到“这个地方的所有房屋的排列类似于一棵二叉树”。 如果 **两个直接相连的房子在同一天晚上被打劫** ,房屋将自动报警。
10+
11+
给定二叉树的 `root` 。返回 _ **在不触动警报的情况下**  ,小偷能够盗取的最高金额_ 。
12+
13+
**示例 1:**
14+
15+
![](https://assets.leetcode.com/uploads/2021/03/10/rob1-tree.jpg)
16+
17+
```
18+
输入: root = [3,2,3,null,3,null,1]
19+
输出: 7
20+
解释: 小偷一晚能够盗取的最高金额 3 + 3 + 1 = 7
21+
```
22+
23+
**示例 2:**
24+
25+
![](https://assets.leetcode.com/uploads/2021/03/10/rob2-tree.jpg)
26+
27+
```
28+
输入: root = [3,4,5,1,3,null,1]
29+
输出: 9
30+
解释: 小偷一晚能够盗取的最高金额 4 + 5 = 9
31+
```
32+
33+
**提示:**
34+
35+
* 树的节点数在 `[1, 10^4]` 范围内
36+
* `0 <= Node.val <= 10^4`
37+
38+
---
39+
40+
深度优先搜索:
41+
42+
假设当前节点不选择,那么当前节点的最大盗取金额为左节点的最大值(不管左节点选还是不选)和右节点的最大值(同样的,不管右节点选还是不选)。
43+
44+
递归方法的返回类型应为长度为 `2` 的数组,第一个元素表示选当前节点的最大值,第二个元素表示不选当前节点的最大值。
45+
46+
```Java
47+
/**
48+
* Definition for a binary tree node.
49+
* public class TreeNode {
50+
* int val;
51+
* TreeNode left;
52+
* TreeNode right;
53+
* TreeNode() {}
54+
* TreeNode(int val) { this.val = val; }
55+
* TreeNode(int val, TreeNode left, TreeNode right) {
56+
* this.val = val;
57+
* this.left = left;
58+
* this.right = right;
59+
* }
60+
* }
61+
*/
62+
class Solution {
63+
public int rob(TreeNode root) {
64+
int[] array = dfs(root);
65+
return Math.max(array[0], array[1]);
66+
}
67+
68+
private int[] dfs(TreeNode root){
69+
if(root == null) return new int[]{0, 0};
70+
int[] left = dfs(root.left);
71+
int[] right = dfs(root.right);
72+
int selected = root.val + left[1] + right[1];
73+
int notSelected = Math.max(left[0], left[1]) + Math.max(right[0], right[1]);
74+
return new int[]{selected, notSelected};
75+
}
76+
}
77+
```

0 commit comments

Comments
 (0)