using namespace std;
struct node{
int val;
node *l,*r;
};
void newnode(node *&pt){
pt=new node;
pt->l=NULL;
pt->r=NULL;
}
vector<int> arr;
node* build(node *pt,int l,int r){
if(l>r) return pt;
if(pt==NULL) newnode(pt);
pt->val=arr[l];
if(l<r){
int i;
for(i=l+1;i<=r;i++){
if(arr[i]>arr[l]) break;
}
pt->l=build(pt->l,l+1,i-1);
pt->r=build(pt->r,i,r);
}
return pt;
}
void dfs(node *pt){
if(pt==NULL) return;
dfs(pt->l);
dfs(pt->r);
printf("%d\n",pt->val);
}
int main(){
int n;
while(scanf("%d",&n)!=EOF){
arr.push_back(n);
}
node *root=build(root,0,arr.size()-1);
dfs(root);
}
沒有留言:
張貼留言