https://www.acwing.com/blog/content/17291/
搜索树的前序遍历即插入建树的顺序
中序遍历是节点值的升序序列
----------
https://www.acwing.com/file_system/file/content/whole/index/content/4184485/
完全二叉树建树(前中后序改变一下顺序即可)
void tree(int x)
{
if(x>n) return;
//按照题目所给的遍历方式递归,后序时就先递归左子树即x*2,然后右子树x*2+1,最后输入根节点
tree(x*2);
tree(x*2+1);
cin>>a[x];
}
代码
#include<iostream>
#include<algorithm>
using namespace std;
const int N=1010;
int a[N],b[N];
int cnt=0,n;
void insert(int x)
{
if(x>n) return;
insert(x*2);
b[x]=a[cnt++];
insert(x*2+1);
}
int main()
{
scanf("%d",&n);
for(int i=0;i<n;i++) scanf("%d",&a[i]);
sort(a,a+n);
insert(1);
for(int i=1;i<=n;i++) printf("%d ",b[i]);
}