2
void solve(TreeNode *root, TreeNode *prev, unordered_map<int, int> &mp, int left,3
vector<TreeNode *> &ans) {4
if (root == NULL) return;8
solve(root->left, root, mp, 1, ans);9
solve(root->right, root, mp, 0, ans);11
if (mp.find(root->val) != mp.end()) {13
if (root->right) ans.push_back(root->right);14
// cout<<root->left->val<<" ";}15
if (root->left) ans.push_back(root->left);16
// cout<<root->right->val<<" ";}28
vector<TreeNode *> delNodes(TreeNode *root, vector<int> &to_delete) {29
if (root == NULL) return {};31
unordered_map<int, int> mp;32
for (int i = 0; i < to_delete.size(); i++) mp[to_delete[i]]++;34
vector<TreeNode *> ans;36
TreeNode *dummy = new TreeNode(-1);39
solve(dummy->left, dummy, mp, 1, ans);40
if (dummy->left) ans.push_back(root);