#include<iostream>
#include<vector>
#include<queue>
using namespace std;
int hhh[45];
int zzz[45];
struct
{
int left;
int right;
}tree[91];
int build(int el,int er,int ml,int mr)
{
if(el>er||ml>mr)return 0;
int root=hhh[er];
int mid=ml;
while(zzz[mid]!=root)mid++;
int num=mid-ml;
tree[root].left=build(el,el+num-1,ml,mid-1);
tree[root].right=build(el+num,er-1,mid+1,mr);
return root;
}
int bfs(int root)
{
vector<int>v;
queue<int>q;
q.push(root);
while(!q.empty())
{
int t=q.front();
q.pop();
v.push_back(t);
if(tree[t].left!=0)q.push(tree[t].left);
if(tree[t].right!=0)q.push(tree[t].right);
}
for(int i=0;i<v.size();i++)
{
if(i==0)cout<<v[i];
else cout<<" "<<v[i];
}
return 0;
}
int main()
{
int n;cin>>n;
for(int i=1;i<=n;i++)cin>>hhh[i];
for(int i=1;i<=n;i++)cin>>zzz[i];
build(1,n,1,n);
bfs(hhh[n]);
}
7-70 树的遍历
最新推荐文章于 2024-05-20 15:29:54 发布