遍历二叉树(递归+非递归)实验报告_第1页
遍历二叉树(递归+非递归)实验报告_第2页
遍历二叉树(递归+非递归)实验报告_第3页
遍历二叉树(递归+非递归)实验报告_第4页
遍历二叉树(递归+非递归)实验报告_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验报告课程名称数据结构实验名称二叉树的遍历日期2013/05/30学生学号B姓名 枯大蜗班级B110502实验目的:掌握二叉树的结构特征,掌握用指针类型描述、遍历二叉树的运算。实验条件:电脑f Vc+实验内容与算法思想:内容:P213实习题1建立一棵用一叉链表方式存储的二叉树,并对其进行遍历(先序、中序、和后序),打印输出遍历结果。基本要求如下:从键盘接受输入线序序列,以二叉链表作为存储结构,建立二叉树(以先序来建立)并对其进行遍历(先序、中序、后序),然后将遍历结果打印输出。要求采用递归和非递归两种方法实现。算法思想:定义二叉树结构体类型时,也定义了一个顺序栈结构体类型,用以辅助完 成二叉

2、树的非递归遍历。由键盘输入一叉树先序序列,用扩展线序序列因数接受并创建一叉链表。遍历前先判断二叉树是否为空,若为空,执行空操作;否则依次执行各遍 历函数相应操作。先序遍历算法思想,先访问根节点,然后按先序遍历左子树,再按先序遍 历右子树。中序遍历算法思想,先按中序遍历左子树,再访问根节点,然后按中序访 问右子树。后序遍历算法思想,先按后序遍历左子树,接着按中序遍历右子树,然后 访问根节点。附:源程序:递归算法程序#include <>#include <>#include <>#define maxsize 100#define FALSE 0#define

3、 TRUE 1typedef struct node*bt=NULL;else*bt=(bitree)malloc(sizeof(bitnode);(*bt)->data=ch;cteatebitree(&(*bt)->lchild);cteatebitree(&(*bt)->rchild);/* 先序递归遍历*/void preorder(bitree root)if(root!=NULL)printf("%c ",root->data);preorder(root->lchild);preorder(root->rch

4、ild);/* 中序递归遍历*/void inorder(bitree root)if(root!=NULL)preorder(root->lchild);printf("%c ",root->data);preorder(root->rchild);/* 后序递归遍历*/void postorder(bitree root)if(root!=NULL)preorder(root->lchild);preorder(root->rchild);printf("%c ",root->data);void main()bi

5、tree bt;cteatebitree(&bt);printf(" 先序递归遍历序列:n");preorder(bt);printf("n");printf(" 中序递归遍历序列:n");inorder(bt);printf("n");printf(" 后序递归遍历序列:n");postorder(bt);printf("n");非递归算法程序#include <>#include <>#include <>#define FAL

6、SE 0#define TRUE 1#define maxsize 100*bt=NULL;typedef struct nodeelse*bt=(bitree)malloc(sizeof(bitnode);(*bt)->data=ch;createbitree(&(*bt)->lchild);createbitree(&(*bt)->rchild);先序遍历void preorder1(bitree root,seqstack s) /bitnode *p;p=root;while(p!=NULL|!=-1)while(p!=NULL)printf(&quo

7、t;%c",p->data);push(&s,p);p=p->lchild;if(!=-1)p=pop(&s,p);p=p->rchild;中序遍历void inorder1(bitree root,seqstack s) /bitnode *p;=-1;p=root;while(p!=NULL|!=-1)if(p!=NULL)push(&s,p);p=p->lchild;elsep=pop(&s,p);printf("%c",p->data);p=p->rchild;后序遍历void posto

8、rder1(bitree root) /bitnode *p,*q;seqstack s;q=NULL;p=root;=-1;/printf("%c",p->data);while(p!=NULL|!=-1)while(p!=NULL)push(&s,p); p=p->lchild;if(!=-1)gettop(&s,&p);if(p->rchild=NULL)|(p->rchild=q)printf("%c",p->data);q=p;p=pop(&s,p);p=NULL;else p=p->rchild;void main()printf(" 先序序列创建二叉树n");seqstack s;=-1;bitree root;createbitree(&root);printf(" 先序遍历序列:n");preorder1(root,s);printf("n");pri

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论