二叉树的层次遍历,实际上是数组模拟队列对结点进行层次遍历。
输入要求:输入为由字母和'#'组成的字符串,代表二叉树的扩展先序序列。例如对于如下二叉树,输入数据:
输入样例:AB#DF##G##C##
输出数据:Levelorder: A B C D F G
存储结构:typedef char ElemType;
typedef struct BiTNode
{
ElemType data;
struct BiTNode *lchild, *rchild;
}BiTNode, *BiTree;
代码实现:void Levelorder(BiTree T)
{
int f=0,r=0;
BiTree q[100000];
BiTree p;//数组模拟队列
if(T)
{
q[r++]=T;
}//根节点入队
while(f!=r)
{
p=q[f++];
printf(" %c",p->data);//访问队头结点的数据域
if(p->lchild)
{
q[r++]=p->lchild;
}//原对头结点左孩子入队
if(p->rchild)
{
q[r++]=p->rchild;
}
}
}