Leetcode 337. House Robber III
2016-06-17 10:28
148 查看
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.
使用DFS,比如对于根节点,分两种情况,如果选根节点(第0层),则不能选第一层结点,如果不选根节点,则第一层可选可不选(到底选不选,用max),这样递归的往下层进行。
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.
使用DFS,比如对于根节点,分两种情况,如果选根节点(第0层),则不能选第一层结点,如果不选根节点,则第一层可选可不选(到底选不选,用max),这样递归的往下层进行。
/** * 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 { vector<int> getMoney(TreeNode* node){ vector<int> ret(2,0); if(!node) return ret; vector<int> lRet=getMoney(node->left); vector<int> rRet=getMoney(node->right); ret[0]=lRet[1]+rRet[1]+node->val; //表示选这层结点 ret[1]=max(lRet[0],lRet[1])+max(rRet[0],rRet[1]); //表示不选这层结点 return ret; } public: int rob(TreeNode* root) { vector<int> ret=getMoney(root); return max(ret[0],ret[1]); } };
相关文章推荐
- Win2003利用dfs(分布式文件系统)在负载均衡下的文件同步配置方案
- win2003分布式文件系统(dfs)配置方法[图文详解]
- win2003分布式文件系统及其部署 图文教程
- Hadoop2.6+jdk8的安装部署(1)——使用jar包安装部署【详细】
- Hadoop FS Shell
- DFS使用方法总结
- FastDFS注意事项
- 无忧技术带您预览DFS(分布式文件系统)管理控制台
- C 语言实现迷宫 DFS算法
- 一幅图弄清DFT与DTFT,DFS的关系
- HDFS---Namenode
- HDFS ---- Services startup
- POJ1523 SPF dfs
- poj1731 Orders dfs
- Surrounded Regions
- Binary Tree Zigzag Level Order Traversal,Restore IP Addresses,Word Search,Simplify Path
- DFS基础(1)
- HDU1241 Oil Deposits
- DFS算法有趣小题目
- HDU 1016 Prime Ring Problem