数据结构二叉树的遍历
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据结构实验报告
班级:
学号:
姓名:
计算机科学与技术学院
题目:二叉树的遍历
一、设计内容
从键盘接受输入先序序列,以二叉链表作为存储结构,建立二叉树(以先序来建立)并对其进行遍历。然后将遍历结果输出。先序、中序、后序遍历要求采用递归和非递归实现。对于如右图所示的二叉树,其扩展的先序遍历序列 为:A B D . G . . C E . . F . .空子树)
当输入扩展的先序遍历序列:
A B D . G . . C E . . F . . 输出应该为:
层次遍历:A B C D E F G 先序遍历:A B D G C E F 中序遍历:D G B A E C F
后续遍历:G D B E F C A 二、设计目的
1. 达到熟练掌握C++语言的基本知识和技能;
2. 能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。 三、系统分析与设计(确定程序功能模块) 1.定义二叉链表存储结构
2.以先序遍历建立二叉链表,CreateBiTree(BiTree *bt)
3.实现先序遍历二叉树的递归算法, PreOrder(BiTree bt) 4实现中序遍历二叉树的递归算法, InOrder(BiTree bt) 5.实现后序遍历二叉树的递归算法, PostOrder(BiTree bt) 6.实现先序遍历二叉树的非递归算法,NRPreOrder (BiTree bt) 7.实现中序遍历二叉树的非递归算法,NRInOrder (BiTree bt) 8.实现后序遍历二叉树的非递归算法,NRPostOrder (BiTree bt) 9.实现层次遍历二叉树的递归算法,LevelOrder (BiTree bt) 10.调用各个函数输出遍历结果
四、源程序代码
#include "iostream.h"
#include "stdio.h"
#include "malloc.h"
typedef struct Node
{/*声明二叉树二叉链表节点的结构!*/
char data;
struct Node *lchild;
struct Node *rchild;
}BiTNode,*BiTree;
typedef struct
{/*定义结构体(将栈中元素的数据类型定义为指针和标志flag合并的结构体类型)*/
BiTree link;
int flag;
}stacktype;
//*************函数声明**************//
void Visite(char a);
void CreateBiTree(BiTree *bt);
void PreOrder(BiTree bt);
void InOrder(BiTree bt);
void PostOrder(BiTree bt);
void NRPreOrder (BiTree bt);
void NRInOrder (BiTree bt);
void NRPostOrder (BiTree bt);
void LevelOrder (BiTree bt);
//***********定义函数(访问节点的数据域)**********//
void Visite(char a)
{