分析:首先按照题目要求删除节点(书上的二叉树删除操作的规则与这个略有不同,所以需要自己重新写)
#include<stdio.h>
#include<stdlib.h>
#define max 105//看要求
#define FALSE 0
#define TRUE 1
#define overflow -1
#define error -1
#define OK 1
typedef struct TNode{
int data;
struct TNode * lchild,*rchild;
}TNode,* BiTree;
//层序遍历用到的队列的操作
typedef struct{
BiTree * base;//存放指针比较方便
int front;
int rear;
}SqQueue;
void InitQueue(SqQueue * Q){
(*Q).base=(BiTree *)malloc(max*sizeof(BiTree));
if(!(*Q).base) exit(overflow);
(*Q).front=(*Q).rear=0;
}
int Enqueue(SqQueue * Q,BiTree e){
if( ((*Q).rear+1) % max == (*Q).front) return error;
(*Q).base[(*Q).rear]=e;
(*Q).rear=((*Q).rear+1) % max;
return OK;
}
int DeQueue(SqQueue * Q,BiTree e){
if((*Q).front==(*Q).rear) r