【问题描述】编写按层次顺序(同一层自左至右)遍历二叉树的算法.

【输入形式】A B * C * * D * *  ( 按照先序输入二叉树中结点的值、字符在输入中没有空格 )
【输出形式】A B D C


#include <stdio.h>
#include <malloc.h>
#include <queue>
using namespace std;

typedef struct BiTNode{
char data;
BiTNode *lchild, *rchild;
}BiTNode,*BiTree;

void CreateBiTree(BiTree &T){
char ch;
scanf("%c",&ch);
if(ch=='*'){
T=NULL;
return;
}
else{
T=(BiTree)malloc(sizeof(BiTNode));
T->data=ch;
CreateBiTree(T->lchild);
CreateBiTree(T->rchild);
}
}
//层次遍历
void LevelOrderTraverse(BiTree T){
queue<BiTree> Queue;
Queue.push(T);
while(!Queue.empty()){
T=Queue.front();
Queue.pop();
printf("%c ",T->data);
if(T->lchild)
Queue.push(T->lchild);
if(T->rchild)
Queue.push(T->rchild);
}
}
int main(){
BiTree T;
CreateBiTree(T);
LevelOrderTraverse(T);
printf("\n");
return 0;
}