typedef struct BiTree {
char data;
struct BiTree *leftChild;
struct BiTree *rightChild;
} BiTree;
typedef struct QueueTree {
// 为了节省空间,使用的是循环队列
BiTree **base; // 用于存放树结点的指针
int front;
int rear;
int tag; // 队列是否为空
int length;
} QueueTree;
QueueTree InitQueueTree(int length);
bool ENQueueTree(QueueTree *queue, BiTree *e);
bool DEQueueTree(QueueTree *queue, BiTree **result);
BiTree *CopyBinaryTree(BiTree *root);
bool ENQueueTree(QueueTree *queue, BiTree *e) {
if (queue->tag == queue->length) return false;
queue->base[queue->rear] = e;
if (queue->rear == queue->length - 1) {
queue->rear = 0;
queue->tag++;
return true;
}
queue->rear++;
queue->tag++;
return true;
}
bool DEQueueTree(QueueTree *queue, BiTre