1110. Delete Nodes And Return Forest (Medium) - TengnanYao/daily_leetcode GitHub Wiki
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:
def delNodes(self, root: TreeNode, to_delete: List[int]) -> List[TreeNode]:
self.result = []
td = set(to_delete)
def dfs(root, flag, isLeft, parent):
if root:
if root.val in td:
if isLeft:
parent.left = None
else:
parent.right = None
dfs(root.left, True, True, root)
dfs(root.right, True, False, root)
else:
if flag:
self.result.append(root)
dfs(root.left, False, True, root)
dfs(root.right, False, False, root)
dummy = TreeNode(left = root)
dfs(root, True, True, dummy)
return self.result