1207. Delete Nodes And Return Forest
My accepted Python solution to LeetCode problem 1207, Delete Nodes And Return Forest, running in 43ms.
- Difficulty: Medium
- Python
- Runtime 43ms
- Memory 17.7MB
- Updated
Read the problem on LeetCode View on GitHub
The problem statement is LeetCode’s and stays on their site. What follows is my accepted solution.
Python
Accepted on LeetCode — runtime 43ms, memory 17.7MB, accepted 2026-01-02.
# 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: Optional[TreeNode], to_delete: List[int]) -> List[TreeNode]:
to_delete_set = set(to_delete)
result = []
def dfs(node, is_root):
if not node:
return None
should_delete = node.val in to_delete_set
if is_root and not should_delete:
result.append(node)
node.left = dfs(node.left, should_delete)
node.right = dfs(node.right, should_delete)
return None if should_delete else node
dfs(root, True)
return result