★算法思想★
- 初始化一个辅助队列
- 根结点入队
- 若队列非空,则队头结点出队,访问该结点,并将其左、右孩子插入队尾(如果有的话)
- 重复3中的操作直至队列为空
- PS:从上述算法思想中可以看出需要用到的队列相关操作有:初始化队列、判空、入队、出队。
1.头文件及元素类型定义
#include<stdio.h>
#include<stdlib.h>
#define ElemType BiTNode*
#define ElemType1 char
2.相关类型定义
typedef struct BiTNode {
ElemType1 data;
struct BiTNode* lchild, * rchild;
}BiTNode, * BiTree;
typedef struct LinkNode {
BiTNode* data;
struct LinkNode* next;
}LinkNode;
typedef struct {
LinkNode* front, * rear;
}LinkQueue;
3.函数声明
void InitQueue(LinkQueue& Q);
bool LiQueueEmpty(LinkQueue Q);
bool EnQueue(LinkQueue& Q, ElemType x);
bool ExQueue(LinkQueue& Q, ElemType& x);
void CreateBiTree(BiTree& T);
void visit(BiTNode* p);
void LevelOrder</