C# Solution
\npublic class Solution \n{\n    IList<TreeNode> result = new List<TreeNode>();\n    HashSet<int> hashSet;\n    \n    public IList<TreeNode> DelNodes(TreeNode r
```\npublic class Solution \n{\n    IList<TreeNode> result = new List<TreeNode>();\n    HashSet<int> hashSet;\n    \n    public IList<TreeNode> DelNodes(TreeNode root, int[] to_delete) \n    {\n        hashSet = new HashSet<int>(to_delete);\n        Delete(root, null);\n        return result;\n    }\n\n    TreeNode Delete(TreeNode root, TreeNode parent) \n    {\n        if (root == null) return null;\n        var current = hashSet.Contains(root.val) ? null : root;\n        root.left = Delete(root.left, current);\n        root.right = Delete(root.right, current);\n        if (parent == null && current != null) result.Add(current);\n        return current;\n    }\n}\n```
[]