Skip to content

Commit 47dbcb0

Browse files
authored
Create 1110. Delete Nodes And Return Forest (#532)
2 parents 8dd4ed5 + 56d6fcd commit 47dbcb0

File tree

1 file changed

+41
-0
lines changed

1 file changed

+41
-0
lines changed

1110. Delete Nodes And Return Forest

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
/**
2+
* Definition for a binary tree node.
3+
* struct TreeNode {
4+
* int val;
5+
* TreeNode *left;
6+
* TreeNode *right;
7+
* TreeNode() : val(0), left(nullptr), right(nullptr) {}
8+
* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
9+
* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
10+
* };
11+
*/
12+
13+
class Solution {
14+
15+
private:
16+
void unlinker(TreeNode* &root, unordered_map<int,bool> &del, vector<TreeNode*> &ans){
17+
if(!root) return;
18+
19+
unlinker(root->left,del,ans);
20+
unlinker(root->right,del,ans);
21+
22+
if(del[root->val]){
23+
if(root->left) ans.push_back(root->left);
24+
if(root->right) ans.push_back(root->right);
25+
root = NULL;
26+
}
27+
}
28+
29+
public:
30+
vector<TreeNode*> delNodes(TreeNode* root, vector<int>& to_delete) {
31+
32+
unordered_map<int,bool> del;
33+
for(int i : to_delete) del[i] = true;
34+
35+
vector<TreeNode*> ans;
36+
unlinker(root,del,ans);
37+
if(root) ans.push_back(root);
38+
39+
return ans;
40+
}
41+
};

0 commit comments

Comments
 (0)