// 第七次作业_09级_软三_090202031048_穆晓晨.cpp : 二叉树遍历。
//
#include "C1.h"
typedef char TElemType;
#define MAXSIZE 20
char O[MAXSIZE]={"ABC##DE#G##F###"};
//char O[MAXSIZE]={"AB##C##"};
int i=0;
typedef struct BiNode{
TElemType data;
struct BiNode *lchild,*rchild; //左右孩子指针
}BiNode,*BiTree;
typedef struct
{
BiTree link;
int flag;
}StackType;
void visit(char e)
{
printf("%c ",e);
}
void InitBiTree(BiTree &T)
{
T=NULL;
}
Status CreateBiTree(BiTree &T){
//按先序次序输入二叉树中结点的值(一个字符),空格字符表示空树
//构造二叉链表表示的二叉树T
char ch;
//scanf("%c",&ch);
ch=O[i++];
if(ch=='#') T=NULL;
else{
if(!(T=(BiNode *)malloc(sizeof(BiNode)))) exit(OVERFLOW);
T->data=ch; //生成根结点
CreateBiTree(T->lchild); //构造左子树
CreateBiTree(T->rchild); //构造右子树
}
return OK;
}//CreateBiTree
//以下是先中后序的递归程序
void PreOrderTraverse(BiTree T, void(*Visit)(TElemType e)){
if(T){
Visit(T->data);
PreOrderTraverse(T->lchild,Visit);
PreOrderTraverse(T->rchild,Visit);
}
}//PreOrderTraverse
void InOrderTraverse(BiTree T, void(*Visit)(TElemType e)){
if(T){
InOrderTraverse(T->lchild,Visit);
Visit(T->data);