题目给出的是一层一层从左到右写成的数组。数组第一个元素是根;某个位置如果没有结点,就记成 −1。
例如 1,2,3,4,5 表示:
1
/ \
二叉树是一种每个结点最多有两个儿子的树,这两个儿子分别称为左儿子和右儿子。
现在用层序数组给出一棵二叉树:按层从左到右依次写出每个结点的权值;如果某个位置没有结点,则在数组里用 −1 表示。数组中的第一个元素是根结点的权值。
请根据这个数组把二叉树构建出来,然后输出这棵树的层序遍历(按层从左到右,只输出非空结点的权值)。
第一行一个整数 n,表示层序数组的长度。
第二行 n 个整数 a1,a2,…,an,表示层序数组。ai=−1 表示该位置为空结点,否则 ai 为对应结点的权值。
一行,输出层序遍历得到的权值序列。相邻权值之间用一个空格分隔,行末不要有多余空格。
输入:
5
1 2 3 4 5
输出:
1 2 3 4 5
说明:
层序数组 1,2,3,4,5 对应的树为:

按层从左到右访问非空结点,得到 1, 2, 3, 4, 5。
输入:
4
1 -1 2 3
输出:
1 2 3
说明:
层序数组 1,−1,2,3 表示:根的权值为 1,左儿子为空,右儿子权值为 2;结点 2 的左儿子权值为 3,右儿子为空。树的结构为:

层序遍历时跳过空结点,得到 1, 2, 3。
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册