Untitled
unknown
plain_text
10 months ago
1.2 kB
4
Indexable
public class DeleteNodesAndReturnForest {
public List<TreeNode> delNodes(TreeNode root, int[] to_delete) {
List<TreeNode> forest = new ArrayList<>();
Set<Integer> toDeleteSet = new HashSet<>();
for (int val : to_delete) {
toDeleteSet.add(val);
}
helper(root, toDeleteSet, forest);
// If root is not deleted, add it to the forest
if (!toDeleteSet.contains(root.val)) {
forest.add(root);
}
return forest;
}
private TreeNode helper(TreeNode node, Set<Integer> toDeleteSet, List<TreeNode> forest) {
if (node == null) {
return null;
}
// Recur on left and right children
node.left = helper(node.left, toDeleteSet, forest);
node.right = helper(node.right, toDeleteSet, forest);
// If this node needs to be deleted
if (toDeleteSet.contains(node.val)) {
if (node.left != null) {
forest.add(node.left);
}
if (node.right != null) {
forest.add(node.right);
}
return null; // This node is deleted
}
return node; // Return the node as part of the tree
}
Editor is loading...
Leave a Comment