码迷,mamicode.com
首页 > 其他好文 > 详细

LeetCode337. 打家劫舍 III

时间:2021-01-06 11:44:45      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:图片   png   最大   etc   font   树形dp   style   nod   ima   

技术图片

☆☆☆☆思路:树形DP问题。

class Solution {
    /**
     *  1.状态的定义:dp[node][j] 表示 node是否偷取所能获得的最大价值。
     *      j = 0, 表示node节点不偷 ; j = 1, 表示node结点偷取
     *  2.状态转移方程:
     *      如果当前节点偷,那么左右子节点均不能偷。
     *      如果当前节点不偷,那么左右子节点偷不偷都可,选最大值。
     *
     *  遍历方式选择 <后序遍历>
     *       因为,子结点陆续汇报信息给父结点,一层一层向上汇报,最后在根结点汇总值。
     */
    public int rob(TreeNode root) {
        int[] res = dfs(root);
        return Math.max(res[0], res[1]);
    }
    private int[] dfs(TreeNode node) {
        if (node == null) {
            return new int[]{0,0};
        }
        int[] left = dfs(node.left);
        int[] right = dfs(node.right);
        // dp[0]:以当前 node 为根结点的子树能够偷取的最大价值,规定 node 结点不偷
        // dp[1]:以当前 node 为根结点的子树能够偷取的最大价值,规定 node 结点偷
        int[] dp = new int[2];
        dp[0] = Math.max(left[0], left[1]) + Math.max(right[0], right[1]); // 当前节点不偷,下家可偷可不偷
        dp[1] = node.val + left[0] + right[0]; // 当前节点偷,那么下家就不能偷了
        return dp;
    }
}

 

LeetCode337. 打家劫舍 III

标签:图片   png   最大   etc   font   树形dp   style   nod   ima   

原文地址:https://www.cnblogs.com/HuangYJ/p/14217113.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!