Skip to content

Del Nodes

LeetCode Problem

# https://leetcode.com/problems/delete-nodes-and-return-forest/


class Solution:
    def __init__(self):
        self.ans = []

    def delNodes(
        self, root: Optional[TreeNode], to_delete: List[int]
    ) -> List[TreeNode]:
        if root.val not in to_delete:
            self.ans.append(root)
        # bfs
        q = [root]
        while q:
            node = q.pop(0)
            if node.val in to_delete:
                if node.left:
                    self.delNodes(node.left, to_delete)
                if node.right:
                    self.delNodes(node.right, to_delete)
            else:
                if node.left:
                    q.append(node.left)
                    if node.left.val in to_delete:
                        node.left = None
                if node.right:
                    q.append(node.right)
                    if node.right.val in to_delete:
                        node.right = None
        return self.ans