输入一棵二叉搜索树,从上往下按层次打印树的每一个节点,同一层中按从左到右的顺序打印:TopDownLeftRight
输入描述
第一行是树的节点个数
第二行是按前序遍历得到的每个节点的数值,整型数,以空格隔开,以换行结束
输出描述
输出是以TopDownLeftRight 遍历的结果,依次用空格隔开,以换行结束
输入例子1:
9
8 3 1 6 4 7 10 14 13
输出例子1:
8 3 10 1 6 14 4 7 13
思路
二叉搜索树根节点都大于左边,小于右边
代码
n = int(input())
nodes = list(map(int, input().split()))
res = [[] for _ in range(n)]
def core(nums, ceng):
global res
if not nums:
return
res[ceng].append(nums[0])
left = []
right = []
for i in range(1, len(nums)):
if nums[i] <= nums[0]:
left.append(nums[i])
else:
right.append(nums[i])
core(left, ceng + 1)
core(right, ceng + 1)
core(nodes, 0)
result = str(res[0][0])
for i in res[1:]:
for j in i:
result = result + " " + str(j)
print(result)
网友评论