题目描述
分析:
构建一个完全二叉搜索树,CBT进行中序遍历,其中序遍历序列是递增的,先将数字排序,完后进行中序遍历,遍历过程中填入数组即可得到CBT,而CBT是按照层序来存放结点的,所以只需要将数组元素顺序输出即可得到层序遍历序列。
#include<cstdio>
#include<algorithm>
using namespace std;
int num[1005],CBT[1005],index=0;
int n;
void inOrder(int root){
if(root>n){
return;
}
inOrder(root*2);
CBT[root]=num[index++];
inOrder(root*2+1);
}
int main(){
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%d",&num[i]);
}
sort(num,num+n);
inOrder(1);
for(int i=1;i<=n;i++){
printf("%d",CBT[i]);
if(i<n){
printf(" ");
}
}
}