


版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数据结构 - 二叉树的遍历 (北华 大学吕磊 )#include #include #include #define OK 1#define ERROR 0#define OVERFLOW -1#define STACK_INIT_SIZE 10010#define STACKINCREMENT#define MAXQSIZE 10typedef struct BiTNodechar data;struct BiTNode *lChild,*rChild;BiTNode,*BiTree;typedef struct SqStackBiTNode *base;BiTNode *top;int s
2、tacksize; SqStack;/ 栈类型(DseqAs)oo_eal(1DPON.LmH seqAs arNSMO-sSASH 八 seqAsdoASM 址岀 /( PON.USS* Moecobswsnd pottfOMM 山 una) SO5 No una)( seqAs HH doAs)七 炸#炬址苗loeco4c-po(S-stacksize+STACKINCREMENT)*sizeof(Bi TNode);S-top=S-base+S-stacksize;S-stacksize+=STACKINCREMENT;*(S-top)=e;S-top+;BiTNode Pop(SqSt
3、ack *S)/ 出栈S-top -;return *S-top;typedef BiTree QElemType; / 设栈元素为二叉 树的指针类 型typedef structQElemType *base;int front; / 头指针 ,若队列不空 ,指向队列头元int rear;/尾指针 ,若队列不空 ,指向队列尾元素的下一个位置 SqQueue;int InitQueue(SqQueue *Q)/ 创建队列 (*Q).base=(QElemType *)malloc(MAXQSIZE*sizeof(QElemType);if(!(*Q).base) exit(OVERFLOW);
4、 (*Q).front=(*Q).rear=0;return OK; int QueueEmpty(SqQueue Q)/ 判断队列是否为 空if(Q.front=Q.rear) return OK; else return ERROR;int EnQueue(SqQueue *Q,QElemType e) / 插入 元素 e 为 Q 的新的队尾元素if(*Q).rear+1)%MAXQSIZE=(*Q).front)return ERROR;(*Q).base(*Q).rear=e; (*Q).rear=(*Q).rear+1)%MAXQSIZE; return OK;int DeQueue
5、(SqQueue *Q,QElemType *e)/ 删除Q 的队头元素 ,用 e 返回其值if(*Q).front=(*Q).rear) return ERROR; *e=(*Q).base(*Q).front; (*Q).front=(*Q).front+1)%MAXQSIZE; return OK;int CreateBiTree(BiTree &T)/ 按先序次序输入 二叉中树结点的值, #表示空树构造char ch;scanf(%c,&ch);if(ch=#)T=NULL; elseif(!(T=(BiTree)malloc(sizeof(BiTNode)exit( OVERFLOW
6、);T-data=ch;CreateBiTree(T-lChild);CreateBiTree(T-rChild); return OK;void PreOrderTraverse(BiTree T)/ 先序遍历二 叉树的递归算法if(T)printf(%c,T-data);PreOrderTraverse(T-lChild);PreOrderTraverse(T-rChild);void InOrderTraverse(BiTree T)/ 中序遍历二叉 树的递归算法if(T)InOrderTraverse(T-lChild);printf(%c,T-data);InOrderTravers
7、e(T-rChild);void PostOrderTraverse(BiTree T)/ 后序遍历二 叉树的递归算法if(T)PostOrderTraverse(T-lChild); PostOrderTraverse(T-rChild); printf(%c,T-data);void inorder(BiTree T)/ 中序非递归遍历二叉树 SqStack S;InitStack(&S);BiTree p=T; while(p|!StackEmpty(&S)if(p)Push(&S,*p); p=p-lChild;elsep=(BiTNode *)malloc(sizeof(BiTNode);*p=Pop(&S);printf(%c ,p-data);p=p-rChild;中、#表示int main()/ 主函数分别实现建立并输出先、 后序遍历二叉树BiTree T;printf( 按先序输入二叉树中结点的值, 空结点 :n);CreateBiTree(T);printf( 先序递归遍历二叉树 :); PreOrderTraverse(T);printf(n 中序递归遍历二叉树 :); InOrderTrav
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 升学指导及咨询方案
- 营养素失衡与环境污染的前沿探索-第1篇-洞察及研究
- 学生餐具消毒安全培训课件
- 虚实夹杂证辨治-洞察及研究
- 嘉积中学 2025- 2026学年度第一学期第一次大测高三物理科参考答案及评分标准
- 低碳运营模式探索-洞察及研究
- 广东省部分学校2025-2026学年高三上学期9月联考历史试卷(含答案)
- 2025年安全员B证考试题及答案
- 情报融合知识图谱构建-洞察及研究
- 办公室岗位说明书0
- 2025年中小学国防教育知识竞赛活动考试题库200题(含答案)
- 校长讲法治课课件
- 村播培训直播课件
- 2025河南新乡长垣市公证处招聘合同制人员5人考试参考题库及答案解析
- 颈椎骨折课件导图
- 2025至2030中国工业云平台行业发展研究与产业战略规划分析评估报告
- 2025餐饮合伙经营合同协议书
- 2025年山东西学中题库及答案
- 14.2物质的比热容同步练习(含答案) 沪科版物理九年级全一册
- 2025年全国中小学校党组织书记网络培训示范班在线考试题库及答案
- 《区域经济学》讲义(1)课件
评论
0/150
提交评论