测试数据输入:123##4##5##
输出数据:12345
#include<iostream>
#include<deque>
#include<list>
using namespace std;
struct Node{
Node *rchild;
Node *lchild;
char data;
};
deque <Node*> Q;
Node *create(Node *bt) //前序建立二叉树
{
char c;
cin >>c;
if(c=='#')
bt=NULL;
else{
bt=new Node;
bt->data=c;
bt->lchild=create(bt->lchild);
bt->rchild=create(bt->rchild);
}
return bt;
}
void leverOrder(Node *bt) //利用队列的性质不难理解
{
if(bt!=NULL)
Q.push_back(bt);
while(Q.empty()==false)
{
Node *temp=Q.front();
cout <<temp->data;
if(temp->lchild!=NULL)
Q.push_back(temp->lchild);
if(temp->rchild!=NULL)
Q.push_back(temp->rchild);
Q.pop_front();
}
cout<<endl;
}
int main(){
Node *bt;
bt=create(bt);
leverOrder(bt);
return 0;
}
求最大宽度:
Q.push_back(bt);
while(1)
{
int len=Q.size();
if(len>tmax)
tmax=len
if(len==0)
break;
while(len>0)
{
Node *temp=Q.front();
if(temp->lchild!=NULL)
Q.push_back(temp->lchild);
if(temp->rchild!=NULL)
Q.push_back(temp->rchild);
Q.pop_back;
len--
}
}