把给定的数组排序,然后按照中序遍历的方法存到数组中。
因为可以发现对于BST树中序遍历的结果就是数组的升序。
于是用中序遍历的方法建树。
#include <stdio.h>
#include <iostream>
#include <algorithm>
using namespace std;
#define maxn 1100
int n,a[maxn],b[maxn];
void create(int node,int &index)
{
if(node>n) return;
create(node<<1,index);
a[node]=b[index++];
create(node<<1|1,index);
}
int main()
{
while(scanf("%d",&n)!=EOF)
{
for(int i=0;i<n;i++)
scanf("%d",b+i);
sort(b,b+n);
int index=0;
create(1,index);
for(int i=1;i<=n;i++)
{
if(i>1) printf(" ");
printf("%d",a[i]);
}
printf("\n");
}
return 0;
}