您的位置:首页 > 其它

leetcode_337. House Robber III 大盗抢劫,房子是二叉树形式,深度优先遍历

2016-11-30 16:31 453 查看
题目:

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.

题意:

房子是二叉树形式,不能偷直连(父子形式)的房子,求偷盗的最大金钱数。

代码:

# Definition for a binary tree node.

# class TreeNode(object):

#     def __init__(self, x):

#         self.val = x

#         self.left = None

#         self.right = None

class Solution(object):

    def dfs(self, root) :      #深度优先遍历二叉树

        if not root : 

            return [0, 0] 

        

        robLeft = self.dfs(root.left)      #左子树的偷盗情况,是一个二元组,第一个元素是不偷这个节点,第二个元素是偷这个节点

        robRight = self.dfs(root.right)     #右子树的偷盗情况,是一个二元组,第一个元素是不偷这个节点,第二个元素是偷这个节点

        

        norobCur = robLeft[1] + robRight[1]    #求不偷当前节点时金额最大值,为偷孩子节点的金钱数,包括偷左孩子和偷右孩子,当前节点一定不能偷,否则会报警

        robCur = max(robLeft[0] + robRight[0] + root.val, norobCur) #求偷当前节点时金额最大值,实际可以偷,也可以不偷,(如果不偷,则可以连续两个节点都不偷,这是关键)。当前节点的最大值,就为偷该节点与不偷该节点的最大值。其实这里偷包含了不偷的情况

        return [norobCur, robCur]

    

    

    def rob(self, root):

        """

        :type root: TreeNode

        :rtype: int

        """

        

        lis = [0,0]   #二元组,lis[0]表示不偷当前节点,lis[1]表示偷当前节点

        lis = self.dfs(root)

        return max(lis)    #返回偷与不偷根节点的最大值

    

        

 

笔记:

深度优先遍历啊!

参考的是网上的代码

robCur = max(robLeft[0] + robRight[0] + root.val, norobCur) 这个理解起来不那么直观,还是没怎么理解。这是这个题的关键。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐