Skip to content

Commit 7ad8f8d

Browse files
committed
Modified one solution
1 parent 6b4da91 commit 7ad8f8d

File tree

1 file changed

+34
-35
lines changed

1 file changed

+34
-35
lines changed

Medium/Delete Nodes And Return Forest.java

Lines changed: 34 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -8,43 +8,42 @@
88
* }
99
*/
1010
class Solution {
11-
List<TreeNode> forest;
12-
public List<TreeNode> delNodes(TreeNode root, int[] to_delete) {
13-
forest = new ArrayList<>();
14-
Set<Integer> toDelete = new HashSet<>();
15-
for (int val : to_delete) {
16-
toDelete.add(val);
17-
}
18-
19-
helper(root, toDelete);
20-
21-
if (!toDelete.contains(root.val)) {
22-
forest.add(root);
23-
}
24-
25-
return forest;
11+
public List<TreeNode> delNodes(TreeNode root, int[] to_delete) {
12+
List<TreeNode> forest = new ArrayList<>();
13+
Set<Integer> set = new HashSet<>();
14+
for (int num : to_delete) {
15+
set.add(num);
2616
}
27-
28-
private TreeNode helper(TreeNode root, Set<Integer> toDelete) {
29-
if (root == null) {
30-
return null;
17+
helper(root, set, forest, null, 0);
18+
return forest;
19+
}
20+
21+
private void helper(TreeNode root, Set<Integer> set, List<TreeNode> forest, TreeNode parent, int side) {
22+
if (root == null) {
23+
return;
24+
}
25+
// Deletion
26+
if (set.contains(root.val)) {
27+
if (parent != null) {
28+
// Decide which node we want to make null based on side
29+
if (side == -1) {
30+
parent.left = null;
3131
}
32-
33-
root.left = helper(root.left, toDelete);
34-
root.right = helper(root.right, toDelete);
35-
36-
if (toDelete.contains(root.val)) {
37-
if (root.left != null) {
38-
forest.add(root.left);
39-
}
40-
41-
if (root.right != null) {
42-
forest.add(root.right);
43-
}
44-
45-
return null;
32+
else {
33+
parent.right = null;
4634
}
47-
48-
return root;
35+
}
36+
// Call the recursive function for left & right with parent as null as we deleted the node
37+
helper(root.left, set, forest, null, 0);
38+
helper(root.right, set, forest, null, 0);
39+
}
40+
// No Deletion
41+
else {
42+
if (parent == null) { // Don't add if we have already added the parent and this is a child node
43+
forest.add(root);
44+
}
45+
helper(root.left, set, forest, root, -1);
46+
helper(root.right, set, forest, root, 1);
4947
}
48+
}
5049
}

0 commit comments

Comments
 (0)