- // rtetre.cpp : 定义控制台应用程序的入口点。
- //
- #include "stdafx.h"
- #include <iostream>
- using namespace std;
- typedef char ElemType;
- /***********************stuct tree********************************/
- typedef struct Bitnode
- {
- ElemType data;
- struct Bitnode *lchild,*rchild;
- }Bitnode,*BitTree;//树
- /*******************the queue***************************
- ***********************************************/
- typedef struct qnode
- {struct Bitnode* Tree;//yahoo
- struct qnode *next;
- }qlink;
- typedef struct
- { qlink *front;
- qlink *rear;
- }linkqueue;
- void Init_Queue(linkqueue*LQ)
- {LQ->front=LQ->rear=new qlink;
- LQ->front->next=NULL;
- }
- int Empty_L_Queue(linkqueue LQ)
- {if(LQ.front==LQ.rear)return 1;
- else return 0;
- }
- void Push_Queue(linkqueue *LQ,BitTree T)//Push_Queue(&LQ,e)
- { qlink *p;
- p=new qlink;
- p->Tree=T;
- p->next=NULL;
- LQ->rear->next=p;
- LQ->rear=p;
- }
- int Dlete_Queue(linkqueue *LQ,BitTree &p)//Dlete_Queue(&LQ,&e)哲理的& 是关键的关键
- {qlink *temp;
- if(Empty_L_Queue(*LQ))return 0;// !!!!!!!!!!!!!!!!!!!
- temp=LQ->front->next;
- p=temp->Tree;
- LQ->front->next=temp->next;
- if(LQ->rear==temp)
- LQ->rear=LQ->front;
- delete temp;
- return 1;
- }
- int Q_Display(linkqueue LQ)//Q_Display(LQ)
- {qlink *p;
- if(Empty_L_Queue(LQ))return 0;
- p=LQ.front->next;
- while(p!=NULL)
- {cout<<p->Tree<<" ";
- p=p->next;
- }
- cout<<endl;
- return 1;
- }
- int Get_Front(linkqueue LQ,BitTree p)
- {if(Empty_L_Queue(LQ))return 0;
- p=LQ.front->next->Tree;
- return 1;
- }
- /*******************the binary Tree***************************
- ***********************************************/
- int CreatB_Tree(BitTree &T)
- {
- ElemType ch;
- ch=getchar();//
- if(ch==' ')T=NULL;
- else
- {if(!(T=new Bitnode))cout<<"Error!"<<endl;
- T->data=ch;
- CreatB_Tree(T->lchild);
- CreatB_Tree(T->rchild);
- }
- return 1;
- }
- /********************practice*************************/
- /******************By layer traversal**********************/
- int Layer_Traver_B_Tree(BitTree T)
- {BitTree p;
- linkqueue LQ;
- Init_Queue(&LQ);
- p=T;
- if(!T)return 0;
- Push_Queue(&LQ,p);
- // Push_Queue(&LQ,p->lchild);
- while(!Empty_L_Queue(LQ))
- {Dlete_Queue(&LQ,p);
- if(p)cout<<p->data<<" ";
- if(p->lchild)Push_Queue(&LQ,p->lchild);
- if(p->rchild)Push_Queue(&LQ,p->rchild);
- }
- return 1;
- }
- int main()
- {
- BitTree T;
- CreatB_Tree(T);
- Layer_Traver_B_Tree(T);
- //cout<<LQ.front->data;
- // cout<<Empty_L_Queue(LQ)<<endl;
- int m;
- cin>>m;
- cout << "Hello world!" << endl;
- return 0;
- }