美文网首页
House Robber III

House Robber III

作者: 我叫胆小我喜欢小心 | 来源:发表于2017-05-03 18:55 被阅读7次

题目来源
还是房屋抢劫的问题,不过这次改成了二叉树抢劫。
然后我不会!!!
看了下答案,最简单的方法就是比较所有情况,深度搜索。
代码如下:

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution {
public:
    int rob(TreeNode* root) {
        if (root == NULL)
            return 0;
        int val = 0;
        if (root->left)
            val += rob(root->left->left) + rob(root->left->right);
        if (root->right)
            val += rob(root->right->left) + rob(root->right->right);
        return max(root->val + val, rob(root->left) + rob(root->right));
    }
};

这种时间复杂度比较高。然后进一步的改进方法呢,实际上用到了DP。

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution {
public:
    int rob(TreeNode* root) {
        vector<int> res;
        res = subRob(root);
        return max(res[0], res[1]);
    }
    
    vector<int> subRob(TreeNode* node)
    {
        if (node == NULL)
            return vector<int>{0, 0};
        vector<int> left = subRob(node->left);
        vector<int> right = subRob(node->right);
        vector<int> res(2, 0);
        res[0] = max(left[0], left[1]) + max(right[0], right[1]);
        res[1] = node->val + left[0] + right[0];
        return res;
    }
};

相关文章

  • 2019-04-07

    LeetCode 337. House Robber III Description The thief has ...

  • 动态十八:打家劫舍 III

    题目地址: https://leetcode-cn.com/problems/house-robber-iii/...

  • House Robber III

    题目来源还是房屋抢劫的问题,不过这次改成了二叉树抢劫。然后我不会!!!看了下答案,最简单的方法就是比较所有情况,深...

  • House Robber III

    问题描述 House Robber III一颗二叉树有n个节点,每个节点都有一个权值,现在要求你从中选出任意个节点...

  • 打家劫舍系列 1,2,3

    打家劫舍3https://leetcode-cn.com/problems/house-robber-iii/su...

  • DP真题

    骨骼清奇:LC 62LC 337 House Robber III LC 486 Predict the Win...

  • house-robber-iii

    这道题略有难度,题目链接。题目要求就是求一个二叉树所有节点数值的和的最大值,条件是有边连接的两个节点不能被同时选中...

  • 337. House Robber III

    题目 The thief has found himself a new place for his thieve...

  • Leetcode 337 - House Robber III

    题目: You are a professional robber planning to rob houses ...

  • 337. House Robber III

    问题描述 The thief has found himself a new place for his thie...

网友评论

      本文标题:House Robber III

      本文链接:https://www.haomeiwen.com/subject/ssqltxtx.html