已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
源程序:#include #include #include #define OK 1#define ERROR 0#define MAXSIZE 50 /*定义队列的最大长度*/typedef char ElemType;/*定义二叉链表结构*/typedef struct TNodeElemType data;struct TNode *LChild, *RChild;BTNode,*BiTree;/*定义循环队列结构*/typedef structBiTree elementMAXSIZE;int front,rear;SeqQueue;/*初始化循环队列*/int InitQueue(SeqQueue *Q)Q-front=Q-rear=0;return OK;/*循环队列入队*/int EnterQueue(SeqQueue *Q,BiTree x)if(Q-rear+1)%MAXSIZE=Q-front) /*尾指针加1追上头指针,标志队列已满*/return ERROR;Q-elementQ-rear=x;Q-rear=(Q-rear+1)%MAXSIZE; /*重新设置队尾指针*/return OK;/*循环队列出队*/int DeleteQueue(SeqQueue *Q,BiTree *x)if(Q-front=Q-rear) /*队列为空*/return ERROR;*x=Q-elementQ-front;Q-front=(Q-front+1)%MAXSIZE; /*重新设置队头指针*/return OK;/*判断循环队列是否*/int IsEmpty(SeqQueue *Q)if(Q-front=Q-rear)return OK;elsereturn ERROR;/*创建二叉链表*/int CreateBTree(BTNode * &bt)char ch;bt=NULL; ch = getchar(); if(ch=.)bt=NULL; else bt=(BTNode *)malloc(sizeof(BTNode); /*生成一个新结点*/ bt-data=ch; CreateBTree(bt-LChild); /*生成左子树*/ CreateBTree(bt-RChild); /*生成右子树*/ return OK;/*先序遍历二叉树*/int PreOrder(BTNode *bt) /* root为指向二叉树(或某一子树)根结点的指针*/if (bt!=NULL)printf(%c ,bt-data);PreOrder(bt -LChild); /*先序遍历左子树*/PreOrder(bt -RChild); /*先序遍历右子树*/return OK;/*中序遍历二叉树*/int InOrder(BTNode *bt) /*root为指向二叉树(或某一子树)根结点的指针*/if (bt!=NULL)InOrder(bt-LChild); /*中序遍历左子树*/printf(%c ,bt-data);InOrder(bt-RChild); /*中序遍历右子树*/return OK;/*后序序遍历二叉树*/int PostOrder(BTNode *bt) /* root为指向二叉树(或某一子树)根结点的指针*/if(bt!=NULL)PostOrder(bt -LChild); /*后序遍历左子树*/PostOrder(bt -RChild); /*后序遍历右子树*/printf(%c ,bt-data);return OK;/*计算节点数*/int leaf(BTNode *bt)int i;if(bt=NULL)i=0;else if(bt-LChild=NULL)&(bt-RChild=NULL)i=1;else i=leaf(bt-LChild)+leaf(bt-RChild); /* 叶子数为左右子树的叶子数目之和 */return i;/*遍历二叉树的叶子节点并输出*/int PreOrderNode(BTNode *bt) /*先序遍历二叉树, root为指向二叉树根结点的指针*/if (bt!=NULL)if (bt -LChild=NULL & bt -RChild=NULL)printf(%c ,bt -data); /*输出叶子结点*/PreOrder(bt -LChild); /*先序遍历左子树*/PreOrder(bt -RChild); /*先序遍历右子树*/return OK;/*层次遍历二叉树显示*/int LayerOrder(BTNode bt)SeqQueue *Q; BiTree p;Q=(SeqQueue *)malloc(sizeof(SeqQueue);p=(BiTree )malloc(sizeof(BiTree);InitQueue(Q);if(&bt=NULL)return ERROR;EnterQueue(Q,&bt);while(!IsEmpty(Q)DeleteQueue(Q,&p);printf(%c ,p-data);if(p-LChild)EnterQueue(Q,p-LChild);if(p-RChild)EnterQueue(Q,p-RChild);return OK;void main()BTNode *bt;int n,i; while(1)printf(请选择功能:1、构造二叉树 2、先序输出 3、中序输出 4、后序输出n 5、统计叶子节点数目 6、输出叶子节点 7、竖向显示二叉树(即按层显示) 8、退出n);scanf(%d,&n);switch(n)case 1:getchar();printf(请输入元素:);i=CreateBTree(bt);if(i!=0)printf(输入完毕n);elseprintf(n输出错误n);break;case 2:printf(二叉树先序序列为:);i=PreOrder(bt);if(i)printf(n输出完毕n);elseprintf(n输出错误n);break;case 3:printf(中序序列为:);i=InOrder(bt);if(i)printf(n输出完毕n);elseprintf(n输出错误n);break;case 4:printf(后序序列为:);i=PostOrder(bt);if(i)printf(n输出完毕n);elseprintf(n输出错误n);break;case 5:i=leaf(bt);if(i=0)printf(叶子节点数为:%dn,i);elseprintf(n输出错误);break;case 6:printf(先序遍历序列时叶子的节点为:);i=PreOrderNode(bt);if(i)printf(n输出完毕n)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 断指再植的护理查房教案(2025-2026学年)
- 高中音乐教案
- 第六周写话二桥教案
- 教案绿色千岛湖
- 护理急救知识技能培训教案
- 设计一个心理健康教育活动教案
- 教案湖北版高考数学一轮复习第五章平面向量平面向量的概念及其线性运算教学案理新人教A版
- 企业部门保密管理职责说明
- 租长期租房合同范本
- 集装箱换装协议合同书
- 2025年大学《心理学-普通心理学》考试参考题库及答案解析
- 2025中国药妆市场法规环境与产品备案策略分析报告
- 2025广东深圳市龙岗区国资国企系统面向全市集中选聘中层管理人员考试及考察笔试历年常考点试题专练附带答案详解2套试卷
- 危重患儿营养筛查及评估
- YY/T 0951-2015干扰电治疗设备
- GB/T 5080.7-1986设备可靠性试验恒定失效率假设下的失效率与平均无故障时间的验证试验方案
- GB/T 31945-2015自升式平台桩腿用钢板
- 人物《袁隆平》PPT介绍
- 内蒙古鄂尔多斯煤矿
- 物业管理服务有限公司战略规划(2022-2026)
- 集中供水点项目邀标书
评论
0/150
提交评论