分类: C/C++
2008-09-19 21:06:26
typedef struct BiTnode{
int data;
struct BiTnode *lchild;
struct BiTnode *rchild;
}BiTnode,*BiTree;//定义二叉树类型
typedef struct Qnode{
BiTree data;
struct Qnode *next;
}Qnode,*QueuePtr;//创建链
typedef struct {
QueuePtr front;//队头指针
QueuePtr rear;//队尾指针
}LinkQueue;//创建队列
void EnQueue(LinkQueue &Q,BiTree e)
{
QueuePtr p=(QueuePtr)malloc(sizeof(Qnode));
p->data=e;p->next=NULL;
Q.rear->next=p;
Q.rear=p;
}//插入e为队尾元素
void DeQueue(LinkQueue &Q, BiTree &e)
{
if(Q.front==Q.rear) printf("error\n");
QueuePtr p=Q.front->next;
e=p->data;
Q.front->next=p->next;
if(Q.rear==p) Q.rear=Q.front;
free(p);
}//删除队头元素
int QueueEmpty(LinkQueue Q)
{
if(Q.front==Q.rear) return 1;
else return 0;
}//判断链栈是否为空
void InitQueue(LinkQueue &Q)
{
Q.front=Q.rear=(QueuePtr)malloc(sizeof(Qnode));
Q.front->next=NULL;
}//初始化栈
void CreateBiTree(BiTree &T)
{//单个生成结点并赋值
printf("输入7个树结点的值:");
T=(BiTree)malloc(sizeof(BiTnode));
BiTree p1=T;
BiTree p2=(BiTree)malloc(sizeof(BiTnode));
BiTree p3=(BiTree)malloc(sizeof(BiTnode));
BiTree p4=(BiTree)malloc(sizeof(BiTnode));
BiTree p5=(BiTree)malloc(sizeof(BiTnode));
BiTree p6=(BiTree)malloc(sizeof(BiTnode));
BiTree p7=(BiTree)malloc(sizeof(BiTnode));
scanf("%d",&p1->data);p1->lchild = p2; p1->rchild = p6;
scanf("%d",&p2->data);p2->lchild = p3; p2->rchild = p5;
scanf("%d",&p3->data);p3->lchild = p4; p3->rchild = NULL;
scanf("%d",&p4->data);p4->lchild = NULL; p4->rchild = NULL;
scanf("%d",&p5->data);p5->lchild = NULL; p5->rchild = NULL;
scanf("%d",&p6->data);p6->lchild = NULL; p6->rchild = p7;
scanf("%d",&p7->data);p7->lchild = NULL; p7->rchild =NULL;
}
void LR(BiTree T,LinkQueue Q)
{
BiTree p = T;
InitQueue(Q);
EnQueue(Q,T);
while(!QueueEmpty(Q))
{
DeQueue(Q,p);
printf("%d",p->data);
if(p->lchild) EnQueue(Q,p->lchild);
if(p->rchild) EnQueue(Q,p->rchild);
}
}
#include
#include
int main(void)
{
BiTree T;
LinkQueue Q;
CreateBiTree(T);
LR(T,Q);
return 0;
}