Simple Java Sol
\npublic List<TreeNode> delNodes(TreeNode root, int[] to_delete) {\n        List<TreeNode> forest = new ArrayList<>();\n        if (root == null) return forest;
```\npublic List<TreeNode> delNodes(TreeNode root, int[] to_delete) {\n        List<TreeNode> forest = new ArrayList<>();\n        if (root == null) return forest;\n        Set<Integer> set = new HashSet<>();\n        for(int i : to_delete) {\n            set.add(i);\n        }\n        deleteNodes(root, set, forest);\n        if (!set.contains(root.val)) {\n            forest.add(root);\n        }\n        return forest;\n    }\n\n    private TreeNode deleteNodes(TreeNode node, Set<Integer> set, List<TreeNode> forest) {\n        if (node == null) return null;\n\n        node.left = deleteNodes(node.left, set, forest);\n        node.right = deleteNodes(node.right, set, forest);\n\n        if (set.contains(node.val)) {\n            if (node.left != null) forest.add(node.left);\n            if (node.right != null) forest.add(node.right);\n            return null;\n        }\n\n        return node;\n    }\n```
[]