




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
#include #include typedef struct Tree int data; struct Tree *left; struct Tree *right;*tree;void InsertTree(tree p,int num) tree T; T = p; int i; int sign; /sign标记“现在要插入的”结点是父结点的“左还是右结点”i=0; tree q,tmp;q =(tree ) malloc( sizeof(struct Tree) );q-data = num; q-left =NULL; q-right =NULL; while(T)if(num T-data ) tmp = T; T= T-right;sign =1; /是父结点的右结点,则标记为1else tmp = T; T= T-left; sign =0;if(T =NULL & sign = 1) tmp -right = q;if(T =NULL & sign = 0) tmp -left = q; void PreOrder(tree p)if(p)printf(%d,p-data);PreOrder(p-left);PreOrder(p-right);void InOrder(tree p)if(p)InOrder(p-left);printf(%d,p-data);InOrder(p-right);void PostOrder(tree p)if(p)PostOrder(p-left);PostOrder(p-right);printf(%d,p-data);/先序遍历,中序遍历,后序遍历思想基本一致:/(1)最左结点(且是尚未访问)依次进栈,/(2)右结点(左结点为空或左结点已访问且是尚未访问)依次进栈/(3)叶子结点(或已访问的(左或右)+ 空子树) 出栈/先序遍历,中序遍历,后序遍历输出原则:/(1) 先序遍历进栈的均输出/(2) 中序遍历“无左子树”输出/(3) 后序遍历void PreOrder1(tree p)tree T = p; int i; tree q100; i =1; q0= T;int k ; k = 0;int rs100;int ls100; /rs,ls数组存放的是“当前结点”的左、右结点是否访问. int j; for(j=0; jdata); while(T-left & lsi = 0)T =T-left;lsi = 1; i+; qi = T;k+;lsi =0; rsi = 0;printf(%d,qi-data);if( T-left =NULL & T-right & rsi =0 ) | (lsi =1 & T-right& rsi =0 ) ) T = T-right; rsi =1; k+;i+;qi = T;lsi =0; rsi = 0; printf(%d,qi-data); if( (T-left =NULL & rsi = 1 ) |(T-left =NULL & T-right = NULL) |(T-right =NULL & lsi = 1 ) |( rsi =1& lsi = 1 ) )i-; k+;T = qi; void InOrder1(tree p)tree T = p; int i; tree q100; i =1; q0= T; qi = T; int k ; k = 0;int rs100;int ls100; int j; for(j=0; jleft & lsi = 0)T =T-left;lsi = 1; i+; qi = T;k+;lsi =0; rsi = 0;if( T-left =NULL & T-right & rsi =0 ) | (lsi =1 & T-right& rsi =0 ) )printf(%d,qi-data); /“无”左结点就输出。 T = T-right; rsi =1; k+;i+;qi = T;lsi =0; rsi = 0; if( (T-left =NULL & rsi = 1 ) |(T-left =NULL & T-right = NULL) |(T-right =NULL & lsi = 1 ) |( rsi =1& lsi = 1 ) ) if(lsi = 0 & rsi = 0) | ( lsi = 1 & qi-right = NULL) )/尚未访问的,或左结点已访问的输出 printf(%d,qi-data); i-; k+;T = qi; void PostOrder1(tree p)tree T = p; int i; tree q100; i =1; q0= T; qi = T; int k ; k = 0;int rs100;int ls100; int j; for(j=0; jleft & lsi = 0)T =T-left;lsi = 1; i+; qi = T;k+;lsi =0; rsi = 0;if( T-left =NULL & T-right & rsi =0 ) | (lsi =1 & T-right& rsi =0 ) ) T = T-right; rsi =1; k+;i+;qi = T;lsi =0; rsi = 0; if( (T-left =NULL & rsi = 1 ) |(T-left =NULL & T-right = NULL) |(T-right =NULL & lsi = 1 ) |( rsi =1& lsi = 1 ) ) printf(%d,qi-data); /为空的时候输出i-; k+;T = qi; void main()tree p =NULL; int num; scanf(%d,&num); p =(tree) malloc( sizeof(struct Tree) );p-data = num; p-left =NULL; p-right =NULL;int i;for(i=1; i=9;i+)scanf(%d,&num); InsertTree(p,num)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 规划公寓建筑组团方案设计
- 2025年职业能力考试题及答案
- 供暖散热器营销推广方案
- 2025年潍坊铲车考试试题及答案
- 2025年农业推广学试题及答案
- 第3课 阈值控制便生活说课稿-2025-2026学年小学信息科技泰山版2024六年级下册-泰山版2024
- DB65T 4389-2021 雷电灾害风险区划技术规范
- 2025年新能源汽车电池管理系统在电动垃圾车领域的应用报告
- DB65T 4479-2021 鲜食桃果品质量分级
- DB65T 4466-2021 特种设备安全风险分级管控工作导则
- 重庆市南开中学高2025-2026学年高三上学期开学第一次检测语文试卷
- (人教版2017课标)高中物理必修第三册 第十章综合测试及答案03
- 脑血管超声课件
- 机械检验考试试题及答案
- 汉语水平考试HSK四级真题4-真题-无答案
- 大疆:2024-2025农业无人机行业白皮书
- 2025年儿科学测验试卷答案及解析
- 地坪硬化合同(标准版)
- 2025-2026学年人音版(简谱)(2024)初中音乐七年级上册教学计划及进度表
- 6 有趣的纸艺制作教学设计-2025-2026学年小学美术广西版五年级上册-广西版
- 2025年中国邮政集团有限公司安徽省分公司社会招聘笔试参考题库附答案解析
评论
0/150
提交评论