leetcodeSolution to some Leetcode problems written in C++ |
git clone git://git.dimitrijedobrota.com/leetcode.git |
Log | Files | Refs | README | LICENSE |
1110.cpp (1050B)
0 class Solution { 1 public: 2 vector<TreeNode *> delNodes(TreeNode *root, const vector<int> &to_delete) { 3 const unordered_set<int> us(begin(to_delete), end(to_delete)); 4 vector<TreeNode *> res; 5 6 queue<TreeNode *> q; 7 q.push(root); 8 while (!q.empty()) { 9 TreeNode *crnt = q.front(); 10 q.pop(); 11 12 bool root = crnt->val > 0; 13 crnt->val = abs(crnt->val); 14 bool deleted = us.count(crnt->val); 15 if (root && !deleted) res.push_back(crnt); 16 17 if (crnt->left) { 18 int val = crnt->left->val; 19 if (!deleted) crnt->left->val = -val; 20 q.push(crnt->left); 21 if (us.count(val)) crnt->left = nullptr; 22 } 23 24 if (crnt->right) { 25 int val = crnt->right->val; 26 if (!deleted) crnt->right->val = -val; 27 q.push(crnt->right); 28 if (us.count(val)) crnt->right = nullptr; 29 } 30 } 31 32 return res; 33 } 34 };