# 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 CBTInserter:
def __init__(self, root: TreeNode):
self.root=root
self.dq=deque()
q=collections.deque()
q.append(root)
while q :
tmp=q.popleft()
if tmp.left :
q.append(tmp.left)
if tmp.right :
q.append(tmp.right)
if tmp.left is None or tmp.right is None:
self.dq.append(tmp);
def insert(self, val: int) -> int:
q=self.dq
tmp=q[0]
if tmp.left is None:
tmp.left=TreeNode(val)
q.append(tmp.left)
elif tmp.right is None:
tmp.right=TreeNode(val)
q.append(tmp.right)
if tmp.left is not None and tmp.right is not None:
q.popleft()
return tmp.val
def get_root(self) -> TreeNode:
return self.root