[Python] BFS Solution
```class Solution:\n    def delNodes(self, root: TreeNode, to_delete: List[int]) -> List[TreeNode]:\n        queue = collections.deque([(root, False)])\n       
```class Solution:\n    def delNodes(self, root: TreeNode, to_delete: List[int]) -> List[TreeNode]:\n        queue = collections.deque([(root, False)])\n        res = []\n        deleteSet = set(to_delete)\n        \n        while queue:\n            node, hasParent = queue.popleft()\n            # new Root found\n            if not hasParent and node.val not in to_delete:\n                res.append(node)\n                \n            hasParent = not node.val in to_delete\n\n            if node.left: \n                queue.append((node.left, hasParent))\n                if node.left.val in to_delete:\n                    node.left = None\n            if node.right:\n                queue.append((node.right, hasParent))\n                if node.right.val in to_delete:\n                    node.right = None\n            \n        return res
['Breadth-First Search', 'Python', 'Python3']