Skip to content

Commit e8d5bd1

Browse files
authored
Create delete-nodes-and-return-forest.py
1 parent aa10c5b commit e8d5bd1

File tree

1 file changed

+32
-0
lines changed

1 file changed

+32
-0
lines changed
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
# Time: O(n)
2+
# Space: O(h + d), d is the number of to_delete
3+
4+
# Definition for a binary tree node.
5+
class TreeNode(object):
6+
def __init__(self, x):
7+
self.val = x
8+
self.left = None
9+
self.right = None
10+
11+
12+
class Solution(object):
13+
def delNodes(self, root, to_delete):
14+
"""
15+
:type root: TreeNode
16+
:type to_delete: List[int]
17+
:rtype: List[TreeNode]
18+
"""
19+
def delNodesHelper(to_delete_set, root, is_root, result):
20+
if not root:
21+
return None
22+
is_deleted = root.val in to_delete_set
23+
if is_root and not is_deleted:
24+
result.append(root)
25+
root.left = delNodesHelper(to_delete_set, root.left, is_deleted, result)
26+
root.right = delNodesHelper(to_delete_set, root.right, is_deleted, result)
27+
return None if is_deleted else root
28+
29+
result = []
30+
to_delete_set = set(to_delete)
31+
delNodesHelper(to_delete_set, root, True, result)
32+
return result

0 commit comments

Comments
 (0)