实验三:二叉树的构造与遍历方法
一、实验内容:用先序次序的方法构造一颗二叉树,并以三种遍历方式遍历次二叉树。
二、实验目的:通过实验能熟练掌握二叉树的定义、性质和存储结构;二叉树的遍历和线索化及遍历算法的各种描述形式。
三、实验代码:
代码:(递归遍历)
#include <stdio.h>
#include <stdlib.h>
#define ERROR 0
#define OK 1
#define OVERFLOW -2
typedef int Status;
typedef char TElemType;
typedef struct BiTNode{
TElemType data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
Status CreateBiTree_PreOrder(BiTree &T){
TElemType ch;
scanf("%c",&ch);
if(ch==' ') T=NULL;
else{
if(!(T=(BiTNode*)malloc(sizeof(BiTNode)))) exit(OVERFLOW);
T->data=ch;
CreateBiTree_PreOrder(T->lchild);
CreateBiTree_PreOrder(T->rchild);
}
return OK;
}
Status PreOrderTraverse(BiTree T,Status(*visit)(TElemType e)){
if(T){
if((*visit)(T->data))
if(PreOrderTraverse(T->lchild,visit))
if(PreOrderTraverse(T->rchild,visit))
return OK;
return ERROR;
}
return OK;
}
Status InOrderTraverse(BiTree T,Status(*visit)(TElemType e)){
if(T!=NULL){
if(InOrderTraverse(T->lchild,visit))
if((*visit)(T->data))
if(InOrderTraverse(T->rchild,visit))
return OK;
return ERROR;
}
else return OK