题目描述
Suppose that all the keys in a binary tree are distinct positive integers. Given the postorder and inorder traversal sequences, you are supposed to output the level order traversal sequence of the corresponding binary tree.
输入描述:
Each input file contains one test case. For each case, the first line gives a positive integer N (<=30), the total number of nodes in the binary tree. The second line gives the postorder sequence and the third line gives the inorder sequence. All the numbers in a line are separated by a space.
输出描述:
For each test case, print in one line the level order traversal sequence of the corresponding binary tree. All the numbers in a line must be separated by exactly one space, and there must be no extra space at the end of the line.
输入例子:
7 2 3 1 5 7 6 4 1 2 3 4 5 6 7
输出例子:
4 1 6 3 5 7 2
我的代码:
#include<iostream>
#include<queue>
using namespace std;
struct Node
{
int data;
Node *lchild,*rchild;
};
Node *creat(int h[],int z[],int n)
{
Node *t;
int i;
if(n==0) return NULL;
t=new Node;
t->data=h[n-1];
for(i=0;i<n;i++)
{
if(z[i]==h[n-1]) break;
}
t->lchild=creat(h,z,i);
t->rchild=creat(h+i,z+i+1,n-i-1);
return t;
}
void ceng(Node *t)
{
queue<Node*>q;
int a[101],i,k=0;
if(t)
{
q.push(t);
while(!q.empty())
{
t=q.front();
q.pop();
a[k++]=t->data;
if(t->lchild) q.push(t->lchild);
if(t->rchild) q.push(t->rchild);
}
}
for(i=0;i<k;i++)
{
if(i==0) cout<<a[i];
else cout<<" "<<a[i];
}
}
int main()
{
int n,i,b[101],c[101];
cin>>n;
for(i=0;i<n;i++) cin>>b[i];
for(i=0;i<n;i++) cin>>c[i];
Node *r=creat(b,c,n);
ceng(r);
return 0;
}