顾名思义,二叉树的层序遍历,即按层次对二叉树进行遍历查询,因此,上图的遍历结果为ABCDEF。
话不多说,直接上代码。二叉树的前序,中序,后序遍历我用到的都是递归的思想(深搜),而进行层序遍历选择队列更优(广搜)。
#include <iostream>
#include <queue>
using namespace std;
typedef char ElemType;
struct BiTree{
BiTree *left,*right;
ElemType data;
}*root;
void SetBiTree(BiTree* &t){
char c;
cin>>c;
if(c=='#') t=NULL;
else{
t = new BiTree;
t->data=c;
SetBiTree(t->left);
SetBiTree(t->right);
}
}
queue<BiTree*> q;
void LevelOrder(BiTree *p){
if(p==NULL) return;
q.push(p);
while(!q.empty()){
BiTree *f = q.front();
q.pop();
cout<<f->data;
if(f->left!=NULL) q.push(f->left);
if(f->right!=NULL) q.push(f->right);
}
}
int main()
{
SetBiTree(root);
LevelOrder(root);
return 0;
}