Leetcode # 1110. Delete Nodes And Return Forest
- 2022.07.20
- Depth-First Search LeetCode Tree
https://leetcode.com/problems/delete-nodes-and-return-forest/
Solution
class Solution: def delNodes(self, root: Optional[TreeNode], to_delete: List[int]) -> List[TreeNode]: to_delete = set(to_delete) # Depth-First Search stack = [(None, root, -1)] roots = {root} while stack: pre, cur, side = stack.pop() # if this node should be deleted if cur.val in to_delete: # delete the link between this and parent if pre: if side == 0: pre.left = None else: pre.right = None # delete this from roots if it's root if cur in roots: roots.remove(cur) # and add its children into roots if cur.left: roots.add(cur.left) if cur.right: roots.add(cur.right) # push into stack if cur.left: stack.append((cur, cur.left, 0)) if cur.right: stack.append((cur, cur.right, 1)) return roots
Last Updated on 2023/08/16 by A1go