Sample Input:
10
1 2 3 4 5 6 7 8 9 0
Sample Output:
6 3 8 1 5 7 9 0 2 4
题解:
在完全二叉搜索树中,其中序遍历必然是从小到大,可以直接对输入数据进行排序,直接得到其中序遍历;
再模拟一次中序遍历,将数组填充数字后就可以得到以数组方式存储的完全二叉搜索树;
直接输出数组即可得到其层次遍历
#include <iostream>
#include <algorithm>
using namespace std;
const int maxn = 1010;
int num[maxn];
int tree[maxn];
int n;
int index=0;
void order(int root){
if(root > n){
return;
}
order(2*root);
tree[root] = num[index++];
order(2*root + 1);
}
int main(){
cin >> n;
for(int i = 0; i < n; i++){
scanf_s("%d",&num[i]);
}
sort(num,num+n);
order(1);
for(int i=1;i<=n;i++){
cout << tree[i];
if(i != n){
cout << " ";
}
}
system("pause");
return 0;
}