題目: 把要刪掉的節點刪掉 然後就會變成很多顆樹 你要把每顆樹的最上面的節點放進陣列 思路: 先跑去每棵樹看是不是要刪掉的數字 是的話就把他刪了 不然就繼續跑 如果要刪除的話 就會讓下面左右兩個節點都變成新的樹 所以要標記一下他們 讓他們塞進去陣列 這樣就好ㄌ 然後我一開始是用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-website.tw), 來自: 1.162.33.183 (臺灣) ※ 文章網址: https://ptt-website.tw/Marginalman/M.1721186373.A.611
SydLrio: 你有什麼用 07/17 11:20
Furina: 我好崇拜你 07/17 11:22
sustainer123: 你有什麼用 07/17 11:25
DJYOMIYAHINA: 我有什麼用 07/17 11:58