Python Solution:
# 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(object): def delNodes(self, root: Optional[TreeNode], to_delete: List[int]) -> List[TreeNode]: result = [] delete_set = set(to_delete) #Recursion #Pass info from parent node to children nodes -- by arguments of recursion function #Pass info from children nodes to parent node -- by return value of recursion function def recursion(node, exist_parent): if not node: return None if node.val in delete_set: node.left = recursion(node.left,exist_parent=False) node.right=recursion(node.right,exist_parent=False) return None else: if not exist_parent: result.append(node) node.left = recursion(node.left, exist_parent=True) node.right = recursion(node.right,exist_parent=True) return node recursion(root,False) return result #Time complexity: O(n) #Space complexity: O(n)
Time Complexity: O(n)
Space Complexity: O(n)
Feeling tired? You can also try our free online no-installation required casual games: Here Please consider to follow my youtube channel to support me: