Python - Better than 90% - Easy to follow code
\n# Definition for a binary tree node.\n# class TreeNode:\n#     def __init__(self, val=0, left=None, right=None):\n#         self.val = val\n#         self.lef
```\n# Definition for a binary tree node.\n# class TreeNode:\n#     def __init__(self, val=0, left=None, right=None):\n#         self.val = val\n#         self.left = left\n#         self.right = right\nclass Solution:\n    def delNodes(self, root: TreeNode, to_delete: List[int]) -> List[TreeNode]:\n        if not root: return None\n        \n        forest_nodes = []\n        to_del = set(to_delete)\n        \n        """\n        Function takes in a node and appends its child to forest if they aren\'t null\n        """\n        def append_childs_to_forest(node):\n            if node.left:\n                    forest_nodes.append(node.left)\n            if node.right:\n                forest_nodes.append(node.right)\n            \n        def purge_nodes(node):\n            if not node: return\n            \n            node.left, node.right = purge_nodes(node.left), purge_nodes(node.right)\n            \n            if node.val in to_del:\n                append_childs_to_forest(node)\n                return None # This will kill the branch bottom to top\n        \n            return node\n        \n        # Call our recursive function\n        purge_nodes(root)\n        \n        # Base case on our root level\n        if root.val not in to_del:\n            forest_nodes.append(root)\n        \n        return forest_nodes\n        \n```
['Python']