完全二叉搜索树的中序遍历是一有序序列
对一有序序列按照中序遍历建立的完全二叉数即为完全二叉搜索树
直接用完全二叉树的性质来,左右孩子分别为根节点2倍和2倍+1,。通过该性质对有序的排列进行中序遍历可建树。
#include<cstdio>
#include<algorithm>
using namespace std;
int node[1010],tree[1010];
int N,pos;
void creatTree(int root){
if(root>N) return;
int lchild=root*2,rchild=root*2+1;
creatTree(lchild);
tree[root]=node[pos++];
creatTree(rchild);
}
bool cmp(int a,int b){
return a<b;
}
int main(){
scanf("%d",&N);
for(int i=0;i<N;i++){
scanf("%d",&node[i]);
}
sort(node,node+N,cmp);
pos=0;
creatTree(1);
for(int i=1;i<=N;i++){
printf("%d",tree[i]);
if(i<N){
printf(" ");
}
}
}