



付费下载
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、/非递归方式建树,并按任一种非递归遍历次序输出二叉树中的所有结点;#include <stdio.h>#include <stdlib.h>#include <malloc.h>#define MaxSize 50typedef char ElemType;typedef struct TNodeElemType data;struct TNode *lchild,*rchild;BTree;/-ElemType str="A(B(C(D,E(F,G(,H),I(J,K(L),M)" /"A(B(D,E(G,H(I),C(F)&
2、quot;/-void CreateBTree(BTree *T,ElemType *Str); /非递归建树;void TraverseBTree(BTree *T); / 选择非递归算法的遍历方式;void PreOrderUnrec(BTree *T); / 先序遍历非递归算法;void InOrderUnrec(BTree *T); /中序遍历非递归算法;void PostOrderUnrec(BTree *T); / 后序遍历非递归算法;/-int main(void)BTree *T = NULL; printf("n二叉树的广义表格式为:nt"); puts(
3、str);CreateBTree(&T,str);TraverseBTree(T);system("pause"); return 0;/-void CreateBTree(BTree *T,ElemType *Str) / 按二叉树广义表建立对应的二叉树存储结构;BTree *p = NULL,*StackMaxSize;/数组为存储树根结点指针的栈int top = -1; /top 为 Stack 栈的栈顶指针 ;char flag; /flag 为处理结点的左子树(L) 和右子树 (R) 的标记 ;*T = NULL;while(*Str)if (*Str
4、= '(') Stack+top = p;flag = 'L' /入栈 ;else if(*Str = ')') -top; /出栈 ;,p 为指向树结点的指针;else if(*Str = ',') flag = 'R'elseif(!(p = (BTree *)malloc(sizeof(BTree) exit (1);p->data = *Str;p->lchild = p->rchild = NULL; /初始化新结点 ;if(*T = NULL) *T = p; /根结点 ;elseif
5、(flag = 'L') Stacktop->lchild = p;if(flag = 'R') Stacktop->rchild = p;+Str;/-void TraverseBTree(BTree *T) / 选择非递归算法的遍历方式int mark;printf("n 非递归算法遍历方式:nt1 -前序遍历 nt2 -printf("nt3 -后序遍历 nt4 -退 出n 请选择: n");中序遍历");if(T = NULL) printf("该树为空! n");while(T !
6、= NULL && scanf("%d",&mark)=1)if(mark=1) printf("先序遍历 :t");PreOrderUnrec(T);else if(mark=2) printf("中序遍历 :t");InOrderUnrec(T);else if(mark=3) printf("后序遍历 :t");PostOrderUnrec(T);elsesystem("cls"); printf("n二叉树的广义表格式为:nt"); puts(
7、str);printf("n 非递归算法遍历方式:printf("nt3 -后序遍历 nt4 -nt1 - 退 出n前序遍历请选择:nt2 - n");中序遍历");printf(" 数据非法,重新输入!n");printf("n");printf("n 请多多指教!by Haroldi.");/-void PreOrderUnrec(BTree *T) / 先序遍历非递归算法;BTree *p = T,*StackMaxSize;int top = -1;while (p != NULL |
8、top != -1)while (p!=NULL) /遍历左子树 ;printf("%c ",p->data);Stack+top = p;p=p->lchild;if (top != -1) / 下次 while 内循环中实现右子树遍历;p = Stacktop-;p=p->rchild;/-void InOrderUnrec(BTree *T) /中序遍历非递归算法;BTree *p = T,*StackMaxSize;int top = -1;while (p != NULL | top != -1)while (p!=NULL)Stack+top
9、= p;p=p->lchild;if (top != -1)p = Stacktop-;printf("%c ",p->data);p=p->rchild;/-void PostOrderUnrec(BTree *T) / 后序遍历非递归算法;BTree *p = T,*StackMaxSize;int top = -1;char flagMaxSize;/ 标识,若为 'R'则说明左右孩子均已遍历while(p != NULL | top != -1)while(p != NULL)Stack+top = p;flagtop = 'L'p = p->lchild;while(top != -1 && flagtop = 'R'),
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030碳捕集与封存技术商业化试点案例与政策补贴机制研究报告
- 2025四川成都市都江堰市医疗卫生辅助岗招募55人考试模拟试题及答案解析
- 内江市2025年度国家综合性消防救援队伍消防员招录体格检查考试参考试题及答案解析
- 2025年阜阳界首市合同制教师招聘80名备考练习题库及答案解析
- 新能源行业安全管理培训体系构建与2025年提升策略报告
- 黑龙江省牡丹江市名校协作体2024-2025学年高二下学期3月月考英语试题(原卷版)
- 初中物理力学专题复习试题
- 餐饮业劳动合同范本与签订流程
- 数字艺术作品版权保护:政策法规与市场实践相结合的深度分析报告
- 文化旅游产业融合资金申请策略优化报告2025
- ZJ50J钻机配置清单(带刹)
- 建筑系馆-深圳大学建筑系馆
- 2022年江门市新会区自然资源局事业单位招聘考试笔试试题及答案解析
- 珊瑚礁生态系统
- GB 28241-2012液压机安全技术要求
- 东亚文化之都
- 医疗保险学导论课件
- 八大员培训计划
- 晨检午检体温记录表
- 四年级上册语文习题课件-4 繁 星|部编版(共14张PPT)
- 数独题目高级50题(后附答案)
评论
0/150
提交评论