leetcode 337. House Robber III

    xiaoxiao2021-03-25  55

    搜到一个节点时有两种选择:

    1、取该节点的val和隔一层后面的搜索结果之和

    2、不取该节点val,取相邻下一层的搜索结果

    比较两种情况取较大的。

    优化:

    用map存好每个节点的结果,减少重复工作。

    class Solution { public: unordered_map<TreeNode*, int> m; int rob(TreeNode* root) { if (root == NULL) return 0; if (m.count(root)) return m[root]; int res = 0; if (root->left) { res += rob(root->left->left) + rob(root->left->right); } if (root->right) { res += rob(root->right->left) + rob(root->right->right); } res = max(res+root->val, rob(root->left)+rob(root->right)); m[root] = res; return res; } };

    转载请注明原文地址: https://ju.6miu.com/read-36476.html

    最新回复(0)