2022年数据结构二叉树遍历实验报告.pdf
《2022年数据结构二叉树遍历实验报告.pdf》由会员分享,可在线阅读,更多相关《2022年数据结构二叉树遍历实验报告.pdf(17页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、数据结构之二叉树实验报告题目 :二叉树的遍历和子树交换指导老师 : 杨政宇班级:通信1202姓名 : 徐江学号: 07精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 1 页,共 17 页 - - - - - - - - - - 需求分析1. 演示程序分别用多种遍历算法遍历二叉树并把数据输出。2. 输入字符序列,递归方式建立二叉树。3. 在演示过程序中,用户敲击键盘,输入数据,即可看到数据的输出。4. 实现链式存储的二叉树的多种遍历算法。遍历算法包括:a)中序递归遍历算法、前序递归遍历算法【选】b)中序遍历
2、非递归算法c) 先序或后序遍历非递归算法d)建立中序线索,并进行中序遍历和反中序遍历5. 实现二叉树的按层遍历算法6. 设计一个测试用的二叉树并创建对应的内存二叉树,能够测试自己算法的边界( 包括树节点数为 0、1以及1 的不同情形 ) 。7. 测试数据:输入数据: -+a *b -c d -e f 概要设计说明:本程序在递归调用中用到了链表,在非递归调用时用到了栈。1. 栈的抽象数据类型ADT Stack数据对象: D=ai|aichar,i=1,2,3.数据关系: R=| ai-1,aiD,i=2,3 .基本操作:InitStack(&S )操作结果:构造一个空栈StackEmpty( S
3、 )精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 2 页,共 17 页 - - - - - - - - - - 初始条件:栈 S已存在。操作结果:若 S为空栈,则返回 OK ,否则返回 ERROR。Push( &S, e )初始条件:栈 S已存在。操作结果:插入元素e 为新的栈顶元素。Pop( &S, &e )初始条件:栈 S已存在且非空。操作结果:删除 S的栈顶元素,并用e 返回其值。GetTop( S, &e )初始条件:栈 S已存在且非空。操作结果:用 e 返回 S的栈顶元素。2. 二叉树的抽象数
4、据类型ADT BinaryTree 数据对象 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, H ,且存在 D1上的关系 H1 ? H;若 Dr,则 Dr 中存在惟一的元素xr , H ,且存在上的关系Hr ? H;精品资料 - - - 欢迎下载 - - - - - - - - - - -
5、 欢迎下载 名师归纳 - - - - - - - - - -第 3 页,共 17 页 - - - - - - - - - - H=,H1,Hr;(4)(D1,H1) 是一棵符合本定义的二叉树,称为根的左子树;(Dr,Hr)是一棵符合本定义的二叉树,称为根的右子树。基本操作:CreateBiTree( &T) 初始条件:给出二叉树T 的定义。操作结果:按要求构造二叉树T。PreOrderTraverse_re( T, print() ) 初始条件:二叉树 T存在,print是二叉树全部结点输出的应用函数。操作结果: 先序递归遍历 T,对每个结点调用函数print一次且仅一次。一旦 print()
6、失败,则操作失败。InOrderTraverse( T, print() ) 初始条件:二叉树 T存在,print是二叉树全部结点输出的应用函数。操作结果: 中序非递归遍历 T,对每个结点调用函数print一次且仅一次。一旦 printf()失败,则操作失败。InOrderTraverse_re(T,print() ) 初始条件:二叉树 T 在在, print是二叉树全部结点输出的应用函数。操作结果:中序递归遍历 T,对每个结点调用函数print一次且仅一次。一旦 printf()失败,则操作失败。PreOrderTraverse(T,print()初始条件:二叉树T 存在, print是二叉
7、树全部结点输出的应用函数。操作结果: 先序非递归遍历 T,对每个结点调用函数print一次且仅一次。一旦 print()失败,则操作失败。精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 4 页,共 17 页 - - - - - - - - - - Levelorder(T) 初始条件:二叉树T在在。操作结果:分层遍历二叉树T,并输出。InOrderThreading(Thrt,T);初始条件:二叉树T在在。操作结果:中序遍历二叉树,并将其中序线索化。InOrderTraverse_Thr( T, prin
8、t);初始条件:二叉树T在在。操作结果:中序非递归遍历二叉线索树TInThreading(p);初始条件:结点p 在在。操作结果:结点p 及子树线索化。3. 主程序的流程:void main()初始化 ;提示;执行二叉数 ADT函数;4. 本程序包含三个模块1)主程序模块void main()初始化;接受命令;显示结果;精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 5 页,共 17 页 - - - - - - - - - - 2)链表模块。递归调用时实现链表抽象数据类型。3)栈模块。非递归调用时实现栈的
9、抽象数据类型。详细设计1. 宏定义及全局变量#define TElemType char#define SElemType BiTree#define OK 1#define OVERFLOW 0#define ERROR 0#define STACK_INIT_SIZE 100#define STACKINCREMENT 10SqStack S;BiThrTree pre;BiThrTree i;2. 函数定义int CreateBiTree(BiTree &T); 叉树链表数据结构:typedef struct BiTNodeTElemType data;struct BiTNode *l
10、child ,*rchild;PointerTag LTag , RTag;BiTNode , *BiTree , BiThrNode , *BiThrTree; 基本操作:a)构造二叉树 Tint CreateBiTree(BiTree &T)精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 6 页,共 17 页 - - - - - - - - - - char ch;scanf(%c,&ch);if(ch= )T=NULL;elseif(!(T=(BiTNode *)malloc(sizeof(BiTN
11、ode)return ERROR;T-data=ch;if (CreateBiTree(T-lchild) T-LTag=Link;if (CreateBiTree(T-rchild) T-RTag=Link;return OK;b)先序递归遍历二叉数T,并输出全部结点值。void PreOrderTraverse_re(BiTree T,int (*print)(TElemType e)if(T)if(print(T-data)PreOrderTraverse_re(T-lchild,print);PreOrderTraverse_re(T-rchild,print);return ;els
12、ereturn ;精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 7 页,共 17 页 - - - - - - - - - - c) 中序非递归遍历二叉树T,并输出全部结点值void InOrderTraverse(BiTree T,int (*print)(TElemType e)SqStack S;=NULL;=NULL;SElemType p=NULL;InitStack(S);Push(S,T);while(!StackEmpty(S)while(GetTop(S,p)&p)Push(S,p-lc
13、hild);Pop(S,p);if(!StackEmpty(S)Pop(S,p);print(p-data);Push(S,p-rchild);return;d)中序递归遍历二叉树T,并输出全部结点值void InOrderTraverse_re(BiTree T,int (*print)(TElemType e) 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 8 页,共 17 页 - - - - - - - - - - if(T) InOrderTraverse_re(T-lchild,print);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022 数据结构 二叉 遍历 实验 报告
限制150内