数据结构 二叉树遍历实验报告.doc
上传人:王子****青蛙 上传时间:2024-09-14 格式:DOC 页数:19 大小:382KB 金币:10 举报 版权申诉
预览加载中,请您耐心等待几秒...

数据结构 二叉树遍历实验报告.doc

数据结构二叉树遍历实验报告.doc

预览

免费试读已结束,剩余 9 页请下载文档后查看

10 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

数据结构之二叉树实验报告题目:二叉树得遍历与子树交换指导老师:杨政宇班级:通信1202姓名:徐江学号:0909121127需求分析演示程序分别用多种遍历算法遍历二叉树并把数据输出.输入字符序列,递归方式建立二叉树.3、在演示过程序中,用户敲击键盘,输入数据,即可瞧到数据得输出.4、实现链式存储得二叉树得多种遍历算法。遍历算法包括:中序递归遍历算法、前序递归遍历算法【选】中序遍历非递归算法先序或后序遍历非递归算法建立中序线索,并进行中序遍历与反中序遍历5、实现二叉树得按层遍历算法6、设计一个测试用得二叉树并创建对应得内存二叉树,能够测试自己算法得边界(包括树节点数为0、1以及>1得不同情形)。7、测试数据:输入数据:-+a*b—cd-ef概要设计说明:本程序在递归调用中用到了链表,在非递归调用时用到了栈。栈得抽象数据类型ADTStack{数据对象:D={ai|ai∈char,i=1,2,3……、、}数据关系:R={〈ai-1,ai>|ai-1,ai∈D,i=2,3…、、}基本操作:InitStack(&S)操作结果:构造一个空栈StackEmpty(S)ﻩ初始条件:栈S已存在.操作结果:若S为空栈,则返回OK,否则返回ERROR。Push(&S,e)ﻫ初始条件:栈S已存在。操作结果:插入元素e为新得栈顶元素。Pop(&S,&e)ﻩ初始条件:栈S已存在且非空.ﻫﻩ操作结果:删除S得栈顶元素,并用e返回其值。GetTop(S,&e)ﻫﻩ初始条件:栈S已存在且非空.ﻩ操作结果:用e返回S得栈顶元素.}2、二叉树得抽象数据类型ADTBinaryTree{数据对象D:D就是具有相同特性得数据元素得集合。ﻫﻩ数据关系R:ﻩﻩ若D=Φ,则R=Φ,称BinaryTree为空二叉树;ﻫﻩﻩ若D≠Φ,则R={H},H就是如下二元关系;(1)在D中存在惟一得称为根得数据元素root,它在关系H下无前驱;(2)若D-{root}≠Φ,则存在D—{root}={D1,Dr},且D1∩Dr=Φ;ﻩﻩ(3)若D1≠Φ,则D1中存在惟一得元素x1,〈root,x1〉∈H,且存在D1上得ﻩﻩ关系H1⊆H;若Dr≠Φ,则Dr中存在惟一得元素xr,<root,xr〉∈H,且ﻩﻩ存在上得关系Hr⊆H;H={<root,x1>,<root,xr>,H1,Hr};ﻫﻩﻩ(4)(D1,{H1})就是一棵符合本定义得二叉树,称为根得左子树;(Dr,{Hr})就是一ﻩ棵符合本定义得二叉树,称为根得右子树。基本操作:ﻩCreateBiTree(&T)ﻩ初始条件:给出二叉树T得定义。ﻫ操作结果:按要求构造二叉树T。ﻩPreOrderTraverse_re(T,print())初始条件:二叉树T存在,print就是二叉树全部结点输出得应用函数。ﻩﻩ操作结果:先序递归遍历T,对每个结点调用函数print一次且仅一次.一旦ﻩﻩﻩprint()失败,则操作失败.InOrderTraverse(T,print())ﻩﻩ初始条件:二叉树T存在,print就是二叉树全部结点输出得应用函数。ﻩﻩ操作结果:中序非递归遍历T,对每个结点调用函数print一次且仅一次。一ﻩﻩ旦printf()失败,则操作失败。InOrderTraverse_re(T,print())ﻩ初始条件:二叉树T在在,print就是二叉树全部结点输出得应用函数。操作结果:中序递归遍历T,对每个结点调用函数print一次且仅一次。一旦ﻩﻩprintf()失败,则操作失败。PreOrderTraverse(T,print())初始条件:二叉树T存在,print就是二叉树全部结点输出得应用函数。ﻫ操作结果:先序非递归遍历T,对每个结点调用函数print一次且仅一次。一ﻩ旦print()失败,则操作失败.Levelorder(T)初始条件:二叉树T在在。操作结果:分层遍历二叉树T,并输出。InOrderThreading(Thrt,T);初始条件:二叉树T在在.操作结果:中序遍历二叉树,并将其中序线索化。InOrderTraverse_Thr(T,print);初始条件:二叉树T在在.操作结果:中序非递归遍历二叉线索树TInThreading(p);初始条件:结点p在在。操作结果:结点p及子树线索化。3、主程序得流程:voidmain(){ﻩ初始化;提示;执行二叉数ADT函数;}4、本程序包含三个模块主程序模块voidmain(){初始化;{接受命令;显示结果;}}链表模块.递归调用时实现链表抽象数据类型.栈模块。