# leetcode House Robber III

### leetcode 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:

Maximum amount of money the thief can rob = 3 + 3 + 1 = 7.

Example 2:

Maximum amount of money the thief can rob = 4 + 5 = 9.

• rob_root = max(rob_L + rob_R , no_rob_L + no_nob_R + root.val)
• no_rob_root = rob_L + rob_R

Python:

C++

Java

Leetcode , , , , . permalink.

### 4 thoughts on “leetcode House Robber III”

1. Max says:

rob_root = max(rob_L + rob_R , no_rob_L + no_nob_R + root.val)
————————————————————-
抢根为什么要取最大？如果rob_L + rob_R比较大的话根不就没抢吗。 请解释一下，谢谢

我觉得抢根应该是：rob_root = no_rob_L + no_rob_R + root.val
不抢根应该是: max(rob_L,no_rob_L)+max(rob_R,no_rob_R)
这样结果也是对的

• 其实是我变量名没取好。
这里的rob_root应该是，抢或不抢root能获得的最大值。

2. donchy says:

“一颗二叉树”的“颗”应该改为“棵”