#include < stdio.h >
#include < stdlib.h >#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define OVERFLOW -2 //Include by "math.h"!typedef int Status ;
//------------------------Link Tree--------------------------//
#define CHAR 0
#if CHAR
typedef char TElemType ;
#define N ' ' //Set different means according to different case!
#else
typedef int TElemType ;
#define N 0
#endiftypedef struct BiPTNode
{
TElemType data ;
struct BiPTNode *lchild , *rchild , *parent ;
} BiPTNode , *BiPTree ;//-------------------------Link Queue---------------------------//
typedef BiPTree QElemType ;
typedef struct QNode //链结点
{
QElemType data ;
struct QNode *next ;
} QNode , *QueuePtr ;typedef struct
{
QueuePtr front ; //队头指针 队头出元素
QueuePtr rear ; //队尾指针 队尾进元素
} LinkQueue ;Status InitQueue( LinkQueue *Q ) ;
Status EnQueue( LinkQueue *Q , QElemType e ) ;
Status DeQueue( LinkQueue *Q , QElemType *e ) ;
Status QueueEmpty( LinkQueue Q ) ;
//三叉链表的引入主要是为了方便简化二叉链表中的部分插入删除操作!(涉及栈和队列部分的操作).其余的函数大体相同!
//------------------Basic Fuction------------------------//Status InitBiPTree( BiPTree *T )
{
*T = NULL ;
return OK ;
}Status DestroyBiPTree( BiPTree *T )
{
if( *T )
{
if( ( *T )->lchild )
DestroyBiPTree( &( *T )->lchild ) ;
if( ( *T )->rchild )
DestroyBiPTree( &( *T )->rchild ) ;fre