forked from AnasImloul/Leetcode-Solutions
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathComplete Binary Tree Inserter.py
34 lines (29 loc) · 1.19 KB
/
Complete Binary Tree Inserter.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
class CBTInserter:
def __init__(self, root: Optional[TreeNode]):
self.root = root
self.queue = Queue()
self.queue.put(self.root)
self.parent_of_last_inserted = None
def insert(self, val: int) -> int:
if self.parent_of_last_inserted is not None and self.parent_of_last_inserted.right is None:
self.parent_of_last_inserted.right = TreeNode(val)
self.queue.put(self.parent_of_last_inserted.right)
return self.parent_of_last_inserted.val
while not self.queue.empty():
node = self.queue.get()
if node.left is None:
node.left = TreeNode(val)
self.queue.put(node.left)
self.parent_of_last_inserted = node
return node.val
else:
self.queue.put(node.left)
if node.right is None:
node.right = TreeNode(val)
self.queue.put(node.right)
self.parent_of_last_inserted = node
return node.val
else:
self.queue.put(node.right)
def get_root(self) -> Optional[TreeNode]:
return self.root