Untitled

 avatar
unknown
plain_text
a month ago
1.2 kB
1
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
    }
Leave a Comment