[LeetCode]House Robber III

来源:互联网 发布:淘宝套现可靠的店家 编辑:程序博客网 时间:2024/05/24 05:12

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:

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

Example 2:

     3    / \   4   5  / \   \  1   3   1

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

题解:有2中方式如下图:

code:

public class Solution {    public int rob(TreeNode root) {               if(root == null)            return 0;        int first = root.val,second = 0;        if(root.left != null)        {            first += rob(root.left.left);            first += rob(root.left.right);            second += rob(root.left);        }        if(root.right != null)        {            first += rob(root.right.left);            first += rob(root.right.right);            second += rob(root.right);        }        return first>second?first:second;    }   }


参考:http://www.cnblogs.com/leesf456/p/5349176.html

0 0