919. Complete Binary Tree Inserter
https://leetcode.com/problems/complete-binary-tree-inserter/description/
Input: inputs = ["CBTInserter","insert","get_root"], inputs = [[[1]],[2],[]]
Output: [null,1,[1,2]]Input: inputs = ["CBTInserter","insert","insert","get_root"], inputs = [[[1,2,3,4,5,6]],[7],[8],[]]
Output: [null,3,4,[1,2,3,4,5,6,7,8]]Thoughts
Code
# 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.a = [root]
for node in self.a:
if node.left: self.a.append(node.left)
if node.right: self.a.append(node.right)
def insert(self, v: int) -> int:
a, N = self.a, len(self.a)
a.append(TreeNode(v))
p = a[(N - 1) // 2]
if N % 2: p.left = a[-1]
else: p.right = a[-1]
return p.val
def get_root(self) -> TreeNode:
return self.a[0]
# Your CBTInserter object will be instantiated and called as such:
# obj = CBTInserter(root)
# param_1 = obj.insert(v)
# param_2 = obj.get_root()Last updated