构造二叉排序树
#include<iostream>
#include<vector>
using namespace std;
struct node{
int val;
node* l;
node* r;
node(int a){
val=a;
l=nullptr;
r=nullptr;
}
};
int main(){
int n;
cin>>n;
vector<int> ans(n+1);
int cur;
node* root;
for(int i=0;i<n;i++){
cin>>cur;
if(i==0){
root=new node(cur);
ans[cur]=0;
}
else{
node* p=root;
while(1){
if(cur>p->val){
if(!p->r){
p->r=new node(cur);
ans[cur]=p->val;
break;
}
else p=p->r;
}
else{
if(!p->l){
p->l=new node(cur);
ans[cur]=p->val;
break;
}
else p=p->l;
}
}
}
}
for(int i=1;i<=n;i++){
cout<<ans[i]<<" ";
}
return 0;
}