operations = [[0, 0], [0, 0], [1, 1], [1, 0], [0, 0]]
operations = [[0, 0], [1, 0], [1, 0], [2, 1], [2, 1], [2, 1], [2, 0], [3, 1], [2, 0]]
# operations = eval(input().strip())
def main(operations):
class TreeNode():
def __init__(self, var):
self.root = var
self.left = None
self.right = None
node = TreeNode(-1)
tree = [[node]]
n = len(operations)
for i in range(n):
height, index = operations[i]
new_node = TreeNode(i)
if len(tree) <= height + 1:
tree.append([])
pre_node = tree[height][index]
if not pre_node.left or not pre_node.right:
tree[height + 1].append(new_node)
if not pre_node.left:
pre_node.left = new_node
elif not pre_node.right:
pre_node.right = new_node
res = []
queue = [tree[0][0]]
while len(queue) > 0:
node1 = queue.pop(0)
if node1:
res.append(node1.root)
queue.append(node1.left)
queue.append(node1.right)
else:
res.append("null")
while True:
if res[-1] == "null":
res.pop()
else:
break
return res
print(main(operations))
operations = [[0, 0], [0, 0], [1, 1], [1, 0], [0, 0]]
operations = [[0, 0], [1, 0], [1, 0], [2, 1], [2, 1], [2, 1], [2, 0], [3, 1], [2, 0]]
# operations = eval(input().strip())
def main(operations):
class TreeNode():
def __init__(self, var):
self.root = var
self.left = None
self.right = None
node = TreeNode(-1)
tree = [[node]]
n = len(operations)
for i in range(n):
height, index = operations[i]
new_node = TreeNode(i)
if len(tree) <= height + 1:
tree.append([])
pre_node = tree[height][index]
if not pre_node.left or not pre_node.right:
tree[height + 1].append(new_node)
if not pre_node.left:
pre_node.left = new_node
elif not pre_node.right:
pre_node.right = new_node
res = []
queue = [tree[0][0]]
while len(queue) > 0:
node1 = queue.pop(0)
if node1:
res.append(node1.root)
queue.append(node1.left)
queue.append(node1.right)
else:
res.append("null")
while True:
if res[-1] == "null":
res.pop()
else:
break
return res
print(main(operations))