LeetCode337打家劫舍III
阿新 • • 發佈:2020-07-30
題目連結
https://leetcode-cn.com/problems/house-robber-iii/
題解
- 遞迴寫法
- 這個思路似乎是錯的(不過我提交後是在某一個測試用例是超時了),先把這份程式碼放這兒吧,後邊補正確的解法
- 題目要求兩個節點不能相連,這不等於隔層求和
// Problem: LeetCode 337 // URL: https://leetcode-cn.com/problems/house-robber-iii/ // Tags: Tree DFS Recursion // Difficulty: Medium #include <iostream> #include <algorithm> using namespace std; struct TreeNode{ int val; TreeNode* left; TreeNode* right; }; class Solution{ public: int rob(TreeNode* root) { // 空節點,結果為0 if(root==nullptr) return 0; // 搶當前節點及其隔層 int result1 = root->val; if(root->left!=nullptr) result1 += rob(root->left->left) + rob(root->left->right); if(root->right!=nullptr) result1 += rob(root->right->left) + rob(root->right->right); // 搶根節點下一層的兩個節點及其隔層 int result2 = rob(root->left) + rob(root->right); return max(result1, result2); } };
作者:@臭鹹魚
轉載請註明出處:https://www.cnblogs.com/chouxianyu/
歡迎討論和交流!