二叉查找树的左右子节点下标分别为2x 2x+1,中序遍历是有序的。
#include <iostream>
#include <algorithm>
#include <vector>
#include <set>
using namespace std;
int digit[1010],tree[1010];
int n,num=0;
void in_order(int index){
if(index>n) return;
in_order(index*2);
tree[index]=digit[num++];
in_order(index*2+1);
}
int main(){
cin>>n;
for(int i=0;i<n;i++)
scanf("%d",&digit[i]);
sort(digit,digit+n);
in_order(1);
for(int i=1;i<=n;i++){
if(i!=1) printf(" ");
printf("%d",tree[i]);
}
return 0;
}