class Node:
def __init__(self, val, left=None, right=None):
self.val = val
self.left = left
self.right = right
def list_to_tree(nums): # 递归实现 列表转二叉树
def level(index):
if index >= len(nums):
return None
root = Node(nums[index])
root.left = level(2 * index + 1)
root.right = level(2 * index + 2)
return root
return level(0)
def get_min_leaf(root):
leaf_node = []
leaf_num = []
queue = [root]
while queue:
# print(queue)
for _ in range(len(queue)):
cur_node = queue.pop(0)
if not cur_node.left and not cur_node.right and cur_node.val != -1:
leaf_node.append(cur_node)
leaf_num.append(cur_node.val)
if cur_node.left:
queue.append(cur_node.left)
if cur_node.right:
queue.append(cur_node.right)
# print(leaf_node)
min_leaf_num = min(leaf_num)
return min_leaf_num
def tree_paths_with_min_leaf_node(root, min_leaf_node):
paths = []
if not root:
return []
def dfs(node, path):
if not node.left and not node.right:
paths.append(list(eval(path)))
else:
path += ','
if node.left:
dfs(node.left, path + str(node.left.val))
if node.right:
dfs(node.right, path + str(node.right.val))
dfs(root, str(root.val))
# print(paths)
for p in paths:
if min_leaf_node in p:
return p
nums = list(map(int, input().split()))
min_leaf_num = get_min_leaf(list_to_tree(nums))
print(tree_paths_with_min_leaf_node(list_to_tree(nums), min_leaf_num))