LeetCode-337. House Robber III

来源:互联网 发布:ug软件下载 编辑:程序博客网 时间:2024/05/01 19:07

这道题主要参照http://www.2cto.com/kf/201603/493582.html

代码如下:

/** * 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:struct Money{int pre;int curr;Money():pre(0),curr(0){}};    int rob(TreeNode* root) {        Money sum = dfs(root);        return sum.curr;    }    Money dfs(TreeNode * root){    if(root == NULL) return Money();    Money leftMoney = dfs(root->left);    Money rightMoney = dfs(root->right);    Money sumMoney;    sumMoney.pre = leftMoney.curr + rightMoney.curr;    sumMoney.curr = root->val + leftMoney.pre + rightMoney.pre;    sumMoney.curr = max(sumMoney.pre,sumMoney.curr);    return sumMoney;    }};

0 1