PKU 1577 Falling Leaves
http://poj.org/problem?id=1577
二分探索木を作って、root-left-rightという感じで表示しろというような問題。
いろいろと適当なコードな気がしますが、面倒くさかったのこれで。
typedef struct _node{ char val; _node* le; _node* ri; _node(char c){ val=c; le=NULL; ri=NULL; } }node; string in[27]; int sz=0; void insert(char ch,node*&p){ if(p==NULL){ p=new node(ch); return; } if(p->val>ch)insert(ch,p->le); else insert(ch,p->ri); } void pr(node*p){ if(p==NULL)return; cout<<p->val; pr(p->le); pr(p->ri); } main(){ while(true){ sz=0; while(cin>>in[sz]){ if(in[sz]=="*")break; if(in[sz]=="$")break; ++sz; } node* root=0; for(int i=sz-1;i>=0;--i){ const string& str=in[i]; rep(j,SZ(str))insert(str[j],root); } pr(root); cout<<endl; if(in[sz]=="$")return 0; } }