#include<iostream>using namespace std;typedef struct BiNode{    char data;    struct BiNode *lchild,*rchild;}BiTNode,*BiTree;//先序建设二叉链表void CreateBiTree(BiTree &T){        char ch;    cin >> ch;    if(ch=='#')  T=NULL;    else{                                    T=new BiTNode;        T->data=ch;        CreateBiTree(T->lchild);        CreateBiTree(T->rchild);    }}//链栈typedef struct StackNode{    BiTNode data;    struct StackNode *next;}StackNode,*LinkStack;//结构空栈Svoid InitStack(LinkStack &S){    S=NULL;}bool StackEmpty(LinkStack S){    if(!S)        return true;    return false;}//入栈 void Push(LinkStack &S,BiTree e){    StackNode *p=new StackNode;    p->data=*e;    p->next=S;    S=p;}//出栈 void Pop(LinkStack &S,BiTree e){    if(S!=NULL){            *e=S->data;        StackNode *p=S;        S=S->next;        delete p;    }} //中序遍历  void In(BiTree T){     LinkStack S;     BiTree p;    BiTree q=new BiTNode;    InitStack(S); p=T;    while(p||!StackEmpty(S)){        if(p){                                        Push(S,p);                            p=p->lchild;        }               else{                                         Pop(S,q);                          cout<<q->data;            p=q->rchild;         }    }                                }                                    //先序遍历  void Pre(BiTree T){     LinkStack S;     BiTree p;    BiTree q=new BiTNode;    InitStack(S); p=T;    while(p||!StackEmpty(S)){        if(p){                                        Push(S,p);            cout<<p->data;                            p=p->lchild;        }               else{                                         Pop(S,q);                          p=q->rchild;         }    }                                }int main(){    BiTree tree;    cout<<"先序建设二叉链表:";    CreateBiTree(tree);    cout<<"先序遍历的后果为:";     Pre(tree);    cout<<endl;    cout<<"中序遍历的后果为:";    In(tree);    cout<<endl;}