本文主要是介绍leetcode-rob house,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
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.
思路:递归,从上到下要么偷要么不偷。缺点:效率不高,容易超时
DP:加个hashmap,防止相同节点重复计算
/*** 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 stolenRootSum = root->val;if(root->left){stolenRootSum+= rob(root->left->left) + rob(root->left->right);}if(root->right){stolenRootSum+= rob(root->right->left) + rob(root->right->right);}return max(stolenRootSum,rob(root->left)+rob(root->right));}
};
这篇关于leetcode-rob house的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!