Re: [閒聊] 每日leetcode已回收

看板Marginalman作者 (是oin的說)時間1年前 (2024/07/17 11:19), 編輯推噓2(202)
留言4則, 4人參與, 1年前最新討論串513/1554 (看更多)
題目: 把要刪掉的節點刪掉 然後就會變成很多顆樹 你要把每顆樹的最上面的節點放進陣列 思路: 先跑去每棵樹看是不是要刪掉的數字 是的話就把他刪了 不然就繼續跑 如果要刪除的話 就會讓下面左右兩個節點都變成新的樹 所以要標記一下他們 讓他們塞進去陣列 這樣就好ㄌ 然後我一開始是用void寫 害我沒刪乾淨 機掰 ```cpp /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} * TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), ri ght(right) {} * }; */ class Solution { public: unordered_set<int> del; vector<TreeNode*> res; TreeNode* find(TreeNode* root, int isnew) { if(root==NULL)return NULL; if(del.find(root->val) != del.end()) { find(root->left,1); find(root->right,1); delete root; return NULL; } root->left = find(root->left,0); root->right = find(root->right,0); if(isnew && root!=NULL) { res.push_back(root); } return root; } vector<TreeNode*> delNodes(TreeNode* root, vector<int>& to_delete) { del.clear(); res.clear(); for(int k : to_delete)del.insert(k); find(root,1); return res; } }; ``` -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.162.33.183 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1721186373.A.611.html

07/17 11:20, 1年前 , 1F
你有什麼用
07/17 11:20, 1F

07/17 11:22, 1年前 , 2F
我好崇拜你
07/17 11:22, 2F

07/17 11:25, 1年前 , 3F
你有什麼用
07/17 11:25, 3F

07/17 11:58, 1年前 , 4F
我有什麼用
07/17 11:58, 4F
文章代碼(AID): #1cbpX5OH (Marginalman)
討論串 (同標題文章)
文章代碼(AID): #1cbpX5OH (Marginalman)