题目:题目详情 - L2-035 完全二叉树的层序遍历 (25 分) (pintia.cn)
大意
一个二叉树,如果每一个层的结点数都达到最大值,则这个二叉树就是完美二叉树。对于深度为 D 的,有 N 个结点的二叉树,若其结点对应于相同深度完美二叉树的层序遍历的前 N 个结点,这样的树就是完全二叉树。
给定一棵完全二叉树的后序遍历,请你给出这棵树的层序遍历结果。
思路
主要要运用到dfs
坑点
要理清楚二叉树得思路
代码
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int n,m,ans=1;
int a[N],b[N],top=1;
void dfs(int x)
{
if(x<=n)
{
dfs(x*2);
dfs(x*2+1);
b[x]=a[top++];
}
}
int main()
{
int i,j;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
cin>>a[i];
}
dfs(1);
for(i=1;i<=n;i++)
{
if(i!=1)
{
cout<<" ";
}
cout<<b[i];
}
return 0;
}
总结
要掌握二叉树得知识