void  PreOrder ( BiTree T) { 
    if ( T!= NULL ) { 
        printf ( "%c" , T-> data) ; 
        PreOrder ( T-> lchild) ; 
        PreOrder ( T-> rchild) ; 
    } 
} 
void  PostOrder ( BiTree T) { 
    if ( T!= NULL ) { 
        PostOrder ( T-> lchild) ; 
        PostOrder ( T-> rchild) ; 
        printf ( "%c" , T-> data) ; 
    } 
} 
void  InOrder ( BiTree T) { 
    if ( T!= NULL ) { 
        InOrder ( T-> lchild) ; 
        printf ( "%c" , T-> data) ; 
        InOrder ( T-> rchild) ; 
    } 
} 
void  LevelOrder ( BiTree T) { 
    LinkQueue Q; 
    InitLinkQueue ( Q) ; 
    BiTree t; 
    EnLinkQueue ( Q, T) ; 
    while  ( ! IsEmpty ( Q) ) { 
        DeLinkQueue ( Q, t) ; 
        putchar ( t-> data) ; 
        if ( t-> lchild!= NULL ) { 
            EnLinkQueue ( Q, t-> lchild) ; 
        } 
        if ( t-> rchild!= NULL ) { 
            EnLinkQueue ( Q, t-> rchild) ; 
        } 
    } 
} 
int  main ( )  { 
   BiTree pnew; 
   BiTree tree= NULL ; 
   BiElemType c; 
   ptag_t phead= NULL , ptail= NULL , list_pnew= NULL , pcur; 
   
    while  ( scanf ( "%c" , & c) ) { 
        if ( c== '\n' ) { 
            break ; 
        } 
        
        
        pnew= ( BiTree)  calloc ( 1 , sizeof  ( BiTNode) ) ; 
        pnew-> data= c; 
        list_pnew= ( ptag_t)  calloc ( 1 , sizeof  ( tag_t) ) ; 
        list_pnew-> p= pnew; 
        
        if ( tree== NULL ) { 
            tree= pnew; 
            phead= list_pnew; 
            ptail= list_pnew; 
            pcur= list_pnew; 
        }  else { 
            
            ptail-> pnext= list_pnew; 
            ptail= list_pnew; 
            
            if ( NULL == pcur-> p-> lchild) { 
                pcur-> p-> lchild= pnew; 
            }  else  if ( NULL == pcur-> p-> rchild) { 
                pcur-> p-> rchild= pnew; 
                pcur= pcur-> pnext; 
            } 
        } 
    } 
    PreOrder ( tree) ; 
    printf ( "----------PreOrder\n" ) ; 
    PostOrder ( tree) ; 
    printf ( "----------PostOrder\n" ) ; 
    InOrder ( tree) ; 
    printf ( "----------InOrder\n" ) ; 
    LevelOrder ( tree) ; 
    printf ( "----------LevelOrder\n" ) ; 
    return  0 ; 
}