PS:为什么不用更简单的递归来构造的呢?复习练手综合题。
首先是辅助循环队列和二叉树的基本结构以及用来测试的前序遍历(参考书籍数据结构):
//定义二叉树结构
typedef struct BiTNode
{
int data = -999;
struct BiTNode *lchild=NULL, *rchild=NULL;
}BiTNode,*BiTree;
//辅助循环队列
typedef struct
{
BiTNode *data[MaxSize];
int front,rear;
}SqQueue;
//队列初始化
void InitQueue(SqQueue &Q){
Q.rear = Q.front = 0;
}
//判断队空
bool isEmpty(SqQueue Q){
if (Q.rear==Q.front)
return true;
else
return false;
}
//入队
bool EnQueue(SqQueue &Q,BiTNode *x){
if ((Q.rear+1)%MaxSize==Q.front)
return false;
Q.data[Q.rear] = x;
//printf("入队元素----(%d)\n", x->data);
Q.rear = (Q.rear + 1) % MaxSize;
return true;
}
//出队
bool DeQueue(SqQueue &Q,BiTree &x){
if (Q.rear==Q.front)
return false;
x = Q.data[Q.front];
//printf("出队元素----(%d)\n", x->da