数据结构二叉树的遍历实验报告_二叉树的遍历实验报告
数据结构二叉树的遍历实验报告由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“二叉树的遍历实验报告”。
实验报告
课程名:数据结构(C语言版)实验名:二叉树的遍历 姓名:
班级:
学号:
时间:2014.11.03
一 实验目的与要求
1.掌握二叉树的存储方法 2.掌握二叉树的三种遍历方法
3.实现二叉树的三种遍历方法中的一种 二 实验内容
• 接受用户输入一株二叉树
• 输出这株二叉树的前根, 中根, 后根遍历中任意一种的顺序 三 实验结果与分析
//*********************************************************** //头文件
#include #include //*********************************************************** //宏定义
#define OK 1 #define ERROR 0 #define OVERFLOW 0
//***********************************************************
typedef struct BiTNode { //二叉树二叉链表存储结构 char data;struct BiTNode *lChild,*rChild;}BiTNode,*BiTree;//*********************************************************** int CreateBiTree(BiTree &T){ //按先序次序输入二叉中树结点的值,空格表示空树 //构造二叉链表表示的二叉树T char ch;fflush(stdin);scanf(“%c”,&ch);if(ch==' ')T=NULL;else{ if(!(T=(BiTNode *)malloc(sizeof(BiTNode))))return(OVERFLOW);T->data=ch;CreateBiTree(T->lChild);CreateBiTree(T->rChild);} return(OK);} //********************************************************* void PreOrderTraverse(BiTree T){ //采用二叉链表存储结构,先序遍历二叉树的递归算法 if(T){ printf(“%c”,T->data);PreOrderTraverse(T->lChild);PreOrderTraverse(T->rChild);} } /***********************************************************/ void InOrderTraverse(BiTree T){ //采用二叉链表存储结构,中序遍历二叉树的递归算法 if(T){ InOrderTraverse(T->lChild);printf(“%c”,T->data);InOrderTraverse(T->rChild);} }
//*********************************************************** void PostOrderTraverse(BiTree T){ //采用二叉链表存储结构,后序遍历二叉树的递归算法 if(T){ PostOrderTraverse(T->lChild);PostOrderTraverse(T->rChild);printf(“%c”,T->data);} }
//*********************************************************** void main(){ //主函数分别实现建立并输出先、中、后序遍历二叉树
printf(“please input your tree follow the PreOrder:n”);BiTNode *Tree;CreateBiTree(Tree);printf(“n先序遍历二叉树:”);PreOrderTraverse(Tree);printf(“n中序遍历二叉树:”);InOrderTraverse(Tree);printf(“n后序遍历二叉树:”);PostOrderTraverse(Tree);}
图1:二叉树的遍历运行结果