建立二叉树与层次遍历二叉树程序

建立二叉树与层次遍历二叉树程序

ID:38714205

大小:31.50 KB

页数:3页

时间:2019-06-18

建立二叉树与层次遍历二叉树程序_第1页
建立二叉树与层次遍历二叉树程序_第2页
建立二叉树与层次遍历二叉树程序_第3页
资源描述:

《建立二叉树与层次遍历二叉树程序》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、#include/*I/O函数*/#include"conio.h"#include"stdlib.h"#defineQUEUESIZE100/*队列初始容量*/#defineTRUE1#defineFALSE!TRUE#defineStatuint#defineBitTreeElementTypeint#defineSHUJU"%d"#defineEND-1typedefstructBitnode/*树的链式存储*/{BitTreeElementTypedata;structBitnode*lchild;/*左孩子*/structBi

2、tnode*rchild;/*右孩子*/}BTnode,*BitTree;typedefBitTreeQueueElemtype;typedefstruct/*定义数据结构*/{QueueElemtypedata[QUEUESIZE];intfront;/*队列的头指针*/intrear;/*队列的尾指针*/}queue;intCreateQueue(queue*q);/*创建队列*/intEnQueue(queue*q,QueueElemtypec);/*向队尾插入元素c*/StatuDeQueue(queue*q,QueueElemtype*reb)

3、;/*队头元素出队用reb返回其值*/StatuCreateBitTree(BitTree*T);/*初始化二叉树*/StatuLayerTravelBitTree(BitTreeT);/*层次遍历二叉树*/StatuVisitData(BitTreeElementTypedata);voidmain(){BitTreet;printf("Inputdatatocreatebittreeand'");printf(SHUJU,END);printf("'willmakenulltree.");/*输入根结点*/CreateBitTree(&t);/*

4、初始化二叉树*/printf("Layerordertravelthetree:");/*层次遍历二叉树*/LayerTravelBitTree(t);/*层次遍历二叉树*/}StatuCreateBitTree(BitTree*T)/*初始化二叉树*/{BitTreeElementTypeinputdata;*T=(BitTree)malloc(sizeof(BTnode));printf("EnterData:");/*输入数据*/fflush(stdin);scanf(SHUJU,&inputdata);if(inputdata==END){T

5、=NULL;returnFALSE;}else{(*T)->data=inputdata;/*将输入的数据存入结点*/printf("Createleftsubtree...<");CreateBitTree(&((*T)->lchild));/*递归循环输入左子树*/printf("Createrightsubtree...<");CreateBitTree(&((*T)->rchild));/*递归循环输入右子树*/returnTRUE;}}StatuLayerTravelBitTree(BitTreeT)/*层次遍历二叉树*/{queuetq;/*

6、队列tq*/QueueElemtyperes;/*用来返回对头元素*/CreateQueue(&tq);/*创建队列*/EnQueue(&tq,T);/*将T插入队尾*/while(DeQueue(&tq,&res)==TRUE)/*当队头元素不空时执行while循环*/{if(res){;/*访问队头元素*/if(res->lchild->data!=-1)EnQueue(&tq,res->lchild);/*将结点左孩子插入队尾*/VisitData(res->data);if(res->rchild->data!=-1)EnQueue(&tq,re

7、s->rchild);/*将结点右孩子插入队尾*/}}returnTRUE;}intCreateQueue(queue*q){q->front=-1;q->rear=-1;returnTRUE;}intEnQueue(queue*q,QueueElemtypec)/*将元素c插入队尾*/{q->rear++;/*尾指针加1*/if(q->rear>=QUEUESIZE)/*若尾指针超出队列长度则提示错误*/{printf("Queueoverflow!");exit(0);}q->data[q->rear]=c;return1;}StatuDeQue

8、ue(queue*q,QueueElemtype*ret)/*队头元素出队并用r

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。