文档介绍:西安邮电大学(计算机学院)课内实验报告实验名称: 二叉树遍历专业名称:通信工程班级:通工1309学生姓名:张睿学号(8位):03131304指导教师:季树滨实验日期:2014年11月17日实验目的及实验环境实验目的:二叉树的遍历。实验环境:VC++,一二叉链表作为存储结构,建立二叉树(以先序来建立),并对其进行遍历,然后将遍历结果打印输出。{//二叉树结点结构chardata;//结点数据structBiTNode*lchild;//左孩子structBiTNode*rchild;//右孩子}BiTNode,*BiTree;typedefBiTreeSElemType;typedefstruct{//栈结构定义SElemType*base;SElemType*top;intstacksize;}SqStack;StatusInitStack(SqStack*S);//构造一个空栈SStatusDestroyStack(SqStack*S);//销毁栈S,S不再存在StatusClearStack(SqStack*S);//把栈S置为空栈StatusStackEmpty(SqStackS);//若栈S为空栈,则返回TRUE,否则返回FALSEintStackLength(SqStackS);//返回S元素的个数,即栈的长度StatusGetTop(SqStackS,SElemType*e);//若栈不为空,则用e返回S的栈顶元素,并返回OK;否则返回FALSEStatusPush(SqStack*S,SElemTypee);//插入元素e为新的栈顶元素StatusPop(SqStack*S,SElemType*e);//若栈S不为空,则删除S的栈顶元素,用e返回其值,并返回OK,否则返回ERRORStatusStackTraverse(constSqStack*S);//从栈底到栈顶依次对每个元素进行访问BiTreeCreateBiTree(BiTreeT);//按先后次序输入二叉树中结点的值(一个字符),空格表示空树//构造二叉链表表示的二叉树TStatusPreOrderRecursionTraverse(BiTreeT,Status(*Visit)(ElemTypee));//采用二叉链表存储结结构,Visit是对数据元素操作的应用函数//先序遍历二叉树T的递归算法,对每个数据元素调用函数VisitStatusInOrderRecursionTraverse(BiTreeT,Status(*Visit)(ElemTypee));//采用二叉链表存储结结构,Visit是对数据元素操作的应用函数//中序遍历二叉树T的递归算法,对每个数据元素调用函数VisitStatusPostOrderRecursionTraverse(BiTreeT,Status(*Visit)(ElemTypee));//采用二叉链表存储结结构,Visit是对数据元素操作的应用函数//后序遍历二叉树T的递归算法,对每个数据元素调用函数VisitStatusPreOrderNonRecursionTraverse(BiTreeT,Status(*Visit)(ElemTypee));//采用二叉链表存储结结构,Visit是对数据元素操作的应用函数//先序遍历二叉树T的非递归算法,对每个数据元素调用函数VisitStatusInOrderNonRecursionTraverse(BiTreeT,Status(*Visit)(ElemTypee));//采用二叉链表存储结结构,Visit是对数据元素操作的应用函数//中序遍历二叉树T的非递归算法,对每个数据元素调用函数VisitStatusPostOrderNonRecursionTraverse(BiTreeT,Status(*Visit)(ElemTypee));//采用二叉链表存储结结构,Visit是对数据元素操作的应用函数//后序遍历二叉树T的非递归算法,对每个数据元素调用函数VisitStatusVisit(ElemTypee);//(3组)及运行结果;非正常测试数据(2组)及运行结果。; 起初代码总是出错,不过仔细检查之后,便找到了错误所在,更加加深了对程序算法的理解。。 更加深刻体会了编程的乐趣,对于c语言也有了更多的了解。附录:(电子版)#include<>#include<>#include<>#defineOK1#defineERROR