LeetCode 1110: Delete Nodes And Return Forest (Python Recursion Solution for Binary Tree)

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: