#include<iostream>
#include<algorithm>
#include<iomanip>
#include<cmath>
#include<vector>
using namespace std;
vector<int> v;
int n;
struct node{
int data;
node *lson;
node *rson;
node(){
lson=NULL;
rson=NULL;
}
};
void inser(node *&root,int x){
if(root==NULL){
root=new node();
root->data=x;
return;
}
if(root->data==x){//先序
return;
}
else if(root->data>x){
inser(root->lson,x);
}
else if(root->data<x){
inser(root->rson,x);
}
}
node *build(){
node *root=NULL;
vector<int>::iterator it;
for(it=v.begin();it!=v.end();it++){
inser(root,*it);
}
return root;
}
void out(node*root,node*flag){
if(root==NULL){
return;
}
if(root!=flag){
cout<<' ';
}
cout<<root->data;
out(root->lson,flag);
out(root->rson,flag);
}
int main(){
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
while(cin>>n){
v.clear();
int x;
for(int i=0;i<n;i++){
cin>>x;
v.push_back(x);
}
node *root=build();
out(root,root);
cout<<endl;
}
return 0;
}
二叉树建树
总结:回顾复习数据结构。