本文共 1935 字,大约阅读时间需要 6 分钟。
#include <stdio.h>
#include <malloc.h>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 <stdio.h>#include <malloc.h>int main(void){ BiTree T; LinkQueue Q; CreateBiTree(T); LR(T,Q); return 0;}
转载地址:http://acmvi.baihongyu.com/