下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数据结构实验报告 实验六 二叉树遍历算法的设计与实现实验人:杨嘉雯 学号: Xb10680230 时间:2012.11.27一、 实验目的1. 掌握二叉树的建立与存储2. 掌握二叉树的遍历方法二、 实验内容1. 编写程序实现根据用户输入二叉树的先序序列建立一棵二叉树,并实现对此二叉树的先序、中序、和后序遍历。用非递归方法实现中序遍历。(选做)三、 实验步骤: 1接收用户输入的先序序列建立以二叉链表为存储结构的二叉树。 2 对建立好的二叉树实现先序、中序、和后序遍历,将遍历后的序列 输出。四、 算法说明对于三种遍历的过程,要是用递归写的就根据书上所给出的遍历步骤做稍微的调整就好了。至于非递归的三
2、种遍历,中序最为简单,用一个栈就可以完成了,思路是边进栈边收索左孩子,直到左孩子为空的时候才开始进行出栈输出再收索右孩子的操作。采用非递归中序遍历算法,先逐步扫描二叉树的左子树,并压入堆栈,如果栈不为空,左子树为空,则弹出栈顶的一个元素并输出。然后再扫描右子树,然后再重复上面的步骤扫描该分支的左子树,直至整棵二叉树都扫描完成。此时输出的序列便是该二叉树的中序遍历序列。五、 测试结果中序线索化二叉树:六、 分析与探讨实验中经常会出现前后字符不一致的情况,主要原因是自己比较马虎,平时编程比较少,遇到比较长的程序,就容易出错。七、 附录:源代码#include <stdlib.h>#in
3、clude <stdio.h>typedef struct BiTNode /*定义二叉链表结点结构*/ char data; struct BiTNode *lchild,*rchild; BiTNode,*BiTree;void CreateBiTree(BiTree *T)/* 输入二叉树的先序遍历序列,创建二叉链表 */ char ch; ch=getchar(); if (ch='#') *T=NULL; else *T=(BiTNode*)malloc(sizeof(BiTNode); (*T)->data=ch; /printf("当前
4、根结点:%cn",(*T)->data); CreateBiTree(&(*T)->lchild); /* 建左子树 */ CreateBiTree(&(*T)->rchild); /* 建右子树 */ void PreOrderTraverse(BiTree T)/* 对二叉树进行先序遍历 */ if(T=NULL) return; printf("%c",T->data); PreOrderTraverse(T->lchild);PreOrderTraverse(T->rchild); void InOrde
5、rTraverse(BiTree T)/* 对二叉树进行中序遍历 */if(T=NULL) return;InOrderTraverse(T->lchild); /中序遍历左子树 printf("%c",T->data); /显示结点数据,可以更改为其它对结点操作 InOrderTraverse(T->rchild); /最后中序遍历右子树 void PostOrderTraverse(BiTree T)/* 对二叉树进行后序遍历 */if(T=NULL) return;PostOrderTraverse(T->lchild); PostOrderT
6、raverse(T->rchild); printf("%c",T->data); main() BiTree T=NULL; printf("请输入二叉树的结点:n"); /scanf("%c",&ch); CreateBiTree(&T); printf("先序遍历:"); PreOrderTraverse(T); printf("n中序遍历:"); InOrderTraverse(T); printf("n后序遍历:"); PostOrder
7、Traverse(T);printf("n");中序线索化二叉树:#include<stdio.h>#include<malloc.h>#define NULL 0#define LEN_T sizeof(yangjiawen)#define LEN_S 50typedef struct yangjiawen char data; struct yangjiawen *lchild,*rchild; int lt,rt;yangjiawen,*yjwTree;void CreateTree(yjwTree *T) char c; c=getchar(
8、); if (c='#')(*T)=NULL; else (*T)=(yjwTree)malloc(LEN_T); (*T)->lt=0; (*T)->rt=0; CreateTree(&(*T)->lchild); (*T)->data=c; CreateTree(&(*T)->rchild); yjwTree XianSuo(yjwTree *T) yjwTree t,pr,p,StackLEN_S; int top=0; t=(yjwTree)malloc(LEN_T); t->rchild=t; if(*T)=NULL
9、)t->lchild=t; else t->lchild=(*T); p=(*T); pr=t; dowhile(p) Stacktop+=p;p=p->lchild; if(top>0) p=Stack-top; printf("%2c",p->data); if(p->lchild=NULL)p->lt=1; p->lchild=pr; if(pr->rchild=NULL) pr->rt=1;pr->rchild=p; pr=p; p=p->rchild; while(p | top>0);pr->rt=1;pr->rchild=t;t->rchild=pr;printf("n&quo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年电离辐射计量标准器具项目资金筹措计划书代可行性研究报告
- 编制说明-交通船闸闸阀门制造质量检验规程
- 2024年广东省深圳实验教育集团中考英语三模试卷
- 上海市市辖区(2024年-2025年小学五年级语文)人教版课后作业(下学期)试卷及答案
- 上海市县(2024年-2025年小学五年级语文)人教版竞赛题(下学期)试卷及答案
- 一年级数学计算题专项练习汇编
- 三年级数学上册教案
- 智能照明系统技术规格书
- 包装用皮袋信封小袋产业深度调研及未来发展现状趋势
- 名片纸半成品产业深度调研及未来发展现状趋势
- 行政复议法-形考作业3-国开(ZJ)-参考资料
- 疯牛病检测规范与防控
- 小学生写字教学经验交流
- 施工现场保卫方案
- 风力光伏新能源发电企业组织架构和部门职能
- 《柔性接口给水管道支墩》(10S505国标图集)简介-国标10s505
- 河沙开采工艺流程
- 机井通电标准化设计(200kVA
- [宝典]妻管严攻略游戏生活休闲
- 培养学生良好学习习惯的物理教学策略
- 湖北省博物馆英文导游词
评论
0/150
提交评论