
工程:Win32 Console Application
BiTreeTraverse.h
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
#include <process.h>
//-----常量定义-----
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
#define MAX_TREE_SIZE 100
#define OK 1
#define ERROR 0
#define OVERFLOW -2
//-----函数返回值类型定义-----
typedef int Status;
typedef char TElemType;
typedef enum{L,R} Tag;
typedef struct BiTNode
{
TElemType data;
Tag tag;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
typedef struct
{
BiTree *base;
BiTree *top;
int stacksize;
}SqStack;
//-----基本操作的函数原型说明-----
Status CreateBiTree(BiTree &T);//按先序遍历方法递归建立一棵二叉树
Status Visit(TElemType e);//访问结点元素,将其值输出
Status PreOrderTraverse1(BiTree T,Status(* Visit)(TElemType e));//先序遍历递归算法
Status PreOrderTraverse2(BiTree T,Status(* Visit)(TElemType e));//先序遍历非递归算法
Status InOrderTraverse1(BiTree T,Status(* Visit)(TElemType e));//中序遍历递归算法
Status InOrderTraverse2(BiTree T,Status(* Visit)(TElemType e));//中序遍历非递归算法
Status PostOrderTraverse1(BiTree T,Status(* Visit)(TElemType e));//后序遍历递归算法
Status PostOrderTraverse2(BiTree T,Status(* Visit)(TElemType e));//后序遍历非递归算法
Status Pop(SqStack &S,BiTNode *&T);//非递归算法中所用的出栈操作
Status InitStack(SqStack &S);//非递归算法中所用的初始化栈操作
Status Push(SqStack &S,BiTNode *T);//非递归算法中所用的入栈操作
Status StackEmpty(SqStack S);//非递归算法中所用的判断栈空操作
BiTreeTraverse.h
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
#include <process.h>
//-----常量定义-----
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
#define MAX_TREE_SIZE 100
#define OK 1
#define ERROR 0
#define OVERFLOW -2
//-----函数返回值类型定义-----
typedef int Status;
typedef char TElemType;
typedef enum{L,R} Tag;
typedef struct BiTNode
{
TElemType data;
Tag tag;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
typedef struct
{
BiTree *base;
BiTree *top;
int stacksize;
}SqStack;
//-----基本操作的函数原型说明-----
Status CreateBiTree(BiTree &T);//按先序遍历方法递归建立一棵二叉树
Status Visit(TElemType e);//访问结点元素,将其值输出
Status PreOrderTraverse1(BiTree T,Status(* Visit)(TElemType e));//先序遍历递归算法
Status PreOrderTraverse2(BiTree T,Status(* Visit)(TElemType e));//先序遍历非递归算法
Status InOrderTraverse1(BiTree T,Status(* Visit)(TElemType e));//中序遍历递归算法
Status InOrderTraverse2(BiTree T,Status(* Visit)(TElemType e));//中序遍历非递归算法
Status PostOrderTraverse1(BiTree T,Status(* Visit)(TElemType e));//后序遍历递归算法
Status PostOrderTraverse2(BiTree T,Status(* Visit)(TElemType e));//后序遍历非递归算法
Status Pop(SqStack &S,BiTNode *&T);//非递归算法中所用的出栈操作
Status InitStack(SqStack &S);//非递归算法中所用的初始化栈操作
Status Push(SqStack &S,BiTNode *T);//非递归算法中所用的入栈操作
Status StackEmpty(SqStack S);//非递归算法中所用的判断栈空操作
