~~
实验五 二叉树的操作及应用
~~
一、实验实习目的及要求
掌握二叉树的定义、结构特征,以及各种存储结构的特点及使用范围,各种遍历算法。掌握指针类型描述、访问和处理二叉树的运算。掌握前序或中序的非递归遍历算法。
二、实验实习设备(环境)及要求(软硬件条件)
7实验室,使用VC上机调试出正确结果
三、实验实习项目、内容与步骤
程序代码给出了该二叉树的链式存储结构的建立、前序、中序、后序遍历的算法,同时也给出了查询“E”是否在二叉树里的代码。代码有三处错误,有标识,属于逻辑错误,对照书中的代码仔细分析后,请修改了在电脑里运行。
四、实验实习所得结果及分析
1、前序遍历是先遍历节点,再先序遍历左子树,最后先序遍历右子树。
visit(t->data);
PreOrder(t-> leftChild, visit);
PreOrder(t-> rightChild, visit);
2、 中序遍历是先中序遍历左子树,再遍历节点,最后中序遍历右子树。
InOrder(t->leftChild, visit);
visit(t->data);
InOrder(t->rightChild, visit);
3、 后序遍历是先后序遍历左子树,再后序遍历右子树,最后遍历节点。
PostOrder(t->leftChild, visit);
PostOrder(t->rightChild, visit);
visit(t->data);
五、实验实习结果分析和(或)源程序调试过程
前序遍历和中序遍历的非递归算法如下所示
#include <stdlib.h>
#include <stdio.h>
#define NULL 0
#define M 100
typedef char DataType;
typedef struct Node
{
DataType data;/*数据域*/
struct Node *leftChild;/*左子树指针*/
struct Node