L2-035 完全二叉树的层序遍历
Statement
Metadata
- 作者: 陈越
- 单位: 浙江大学
- 代码长度限制: 16 KB
- 时间限制: 400 ms
- 内存限制: 64 MB
一个二叉树,如果每一个层的结点数都达到最大值,则这个二叉树就是完美二叉树。对于深度为
给定一棵完全二叉树的后序遍历,请你给出这棵树的层序遍历结果。
输入格式
输入在第一行中给出正整数
输出格式
在一行中输出该树的层序遍历序列。所有数字都以 1 个空格分隔,行首尾不得有多余空格。
输入样例
输出样例
Solution
#include <bits/stdc++.h>
using namespace std;
constexpr int N = 1e2 + 10;
int n, a[N], b[N];
void dfs(int u) {
if (u > n)
return;
dfs(u << 1);
dfs(u * 2 + 1);
b[u] = ++*b;
}
int main() {
cin >> n;
for (int i = 1; i <= n; ++i) {
cin >> a[i];
}
*b = 0;
dfs(1);
for (int i = 1; i <= n; ++i) {
cout << a[b[i]] << " \n"[i == n];
}
return 0;
}
Last update: May 4, 2022