描述
二叉树是非常重要的树形数据结构,层次遍历一棵二叉树是按从上到下、从左到右的次序访问树上的结点。例如,图1020所示的二叉树层次遍历序列为A B C D E F。
图1020
请根据先序遍历序列建立一棵的二叉树(用#代表空树或空子树),输出层次遍历序列。
输入
二叉树的先序遍历序列,用#代表空树或空子树
输出
二叉树层次遍历序列
样例输入
A B # D # # C E # # F # #
样例输出
LevelOrder: A B C D E F
#include <iostream> #include <list> using namespace std; class BTNode { public: char data; BTNode *lChild; BTNode *rChild; }; void Creat(BTNode *&t) { char c; cin>>c; if(c=='#') t=NULL; else { t=new BTNode; t->data=c; t->lChild=NULL; t->rChild=NULL; Creat(t->lChild); Creat(t->rChild); } } void LevelOrder(BTNode *&t) { list<BTNode*> Q; if(t==NULL) return; else { Q.push_back(t); while(Q.size()>0) { BTNode* p=Q.front(); cout<<" "<<p->data; if(p->lChild) Q.push_back(p->lChild); if(p->rChild) Q.push_back(p->rChild); Q.pop_front(); } } } int main() { BTNode *t; Creat(t); cout<<"LevelOrder:"; LevelOrder(t); cout<<endl; return 0; }