完全二叉树中序遍历的结果是顺序的,所以只需要中序遍历,按顺序放置即可
#include <iostream>
#include <algorithm>
using namespace std;
const int N = 2000+5;
int Level[N];
int len=0;
void lev(int a[],int x,int n)
{
if(x > n) return;
lev(a,x*2,n);
Level[x]=a[len++];
lev(a,x*2+1,n);
}
int main()
{
int n;
int i;
cin>>n;
int a[n];
len=0;
for(i=0; i<n; i++)
cin>>a[i];
sort(a,a+n);
lev(a,1,n);
for(i=1; i<=n-1; i++)
cout<<Level[i]<<" ";
cout<<Level[n]<<endl;
}
2.根据完全二叉树的特点
即可直接确定左子树个数,则根结点即可确定,递归即可