This commit is contained in:
parent
7f690e912e
commit
ea63f9a6c6
1 changed files with 24 additions and 0 deletions
24
medium/delete_nodes_and_return_forest.py
Normal file
24
medium/delete_nodes_and_return_forest.py
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
# https://leetcode.com/problems/delete-nodes-and-return-forest
|
||||
from typing import List, Optional
|
||||
|
||||
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)
|
||||
ret = []
|
||||
def dfs(node: Optional[TreeNode], is_root: bool) -> Optional[TreeNode]:
|
||||
if not node:
|
||||
return None
|
||||
is_deleted = node.val in to_delete_set
|
||||
if is_root and not is_deleted:
|
||||
ret.append(node)
|
||||
node.left = dfs(node.left, is_deleted)
|
||||
node.right = dfs(node.right, is_deleted)
|
||||
return None if is_deleted else node
|
||||
dfs(root, True)
|
||||
return ret
|
||||
Loading…
Add table
Add a link
Reference in a new issue