题目链接:https://pintia.cn/problem-sets/994805046380707840/problems/1336215880692482058
题意
给一个完全二叉树的后序遍历结果,输出此二叉树层序遍历的结果。
思路
用结构体数组模拟树结构,根据后序遍历创建完全二叉树,层序遍历的结果即为结构体数组1到n的对应的结点,顺序输出结点的值即可。
代码
#include<bits/stdc++.h>
using namespace std;
const int maxn=35;
int n;
struct node{
int l,r;
int data;
}tree[maxn];
//根据后序遍历结果建树
void solve(int rt)
{
if(tree[rt].l!=0) solve(tree[rt].l);
if(tree[rt].r!=0) solve(tree[rt].r);
scanf("%d",&tree[rt].data);
}
int main()
{
scanf("%d",&n);
//初始化结点信息
for(int i=1;i<=n;i++){
if(i*2<=n) tree[i].l=(i<<1);
if(i*2+1<=n) tree[i].r=(i<<1|1);
}
solve(1);
for(int i=1;i<=n;i++) printf("%d%c",tree[i].data,i==n?'\n':' ');
return 0;
}