#include <iostream> using namespace std; struct BiOTree{ int data; struct BiOTree* leftchild; struct BiOTree* rightchild; BiOTree(int a):data(a),leftchild(NULL),rightchild(NULL){}; }; BiOTree* BuildT(BiOTree* root,int x){ if(root==NULL){ root=new BiOTree(x); } else if(x<root->data){ root->leftchild=BuildT(root->leftchild, x); } else if(x>root->data){ root->rightchild=BuildT(root->rightchild, x); } return root; } void MidOrder(BiOTree* root){ if(root==NULL) return; MidOrder(root->leftchild); cout<<root->data<<" "; MidOrder(root->rightchild); } void PreOrder(BiOTree* root){ if(root==NULL) return; cout<<root->data<<" "; PreOrder(root->leftchild); PreOrder(root->rightchild); } void PostOrder(BiOTree* root){ if(root==NULL) return; PostOrder(root->leftchild); PostOrder(root->rightchild); cout<<root->data<<" "; } int main() { int n; while(cin>>n){ BiOTree* root=NULL; for(int i=0;i<n;i++){ int tem; cin>>tem; root=BuildT(root, tem); } PreOrder(root); cout<<endl; MidOrder(root); cout<<endl; PostOrder(root); cout<<endl; } }