Re: [閒聊] 每日leetcode已回收
題目:
把要刪掉的節點刪掉
然後就會變成很多顆樹
你要把每顆樹的最上面的節點放進陣列
思路:
先跑去每棵樹看是不是要刪掉的數字
是的話就把他刪了
不然就繼續跑
如果要刪除的話
就會讓下面左右兩個節點都變成新的樹
所以要標記一下他們
讓他們塞進去陣列
這樣就好ㄌ
然後我一開始是用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
討論串 (同標題文章)
完整討論串 (本文為第 513 之 1554 篇):