填坑
#include<iostream>
#include <bits/stdc++.h>
using namespace std
;
const int maxn
= 50000 + 10;
int n
;
int pre
[maxn
];
int in
[maxn
];
int posttravel(int preL
, int preR
, int inL
, int inR
)
{
if(inL
== inR
) return in
[inL
];
int root
= preL
;
int i
;
for(i
= inL
; i
<= inR
; i
++){
if(in
[i
] == pre
[root
]) break;
}
int numLeft
= i
- inL
;
if(numLeft
== 0)
return posttravel(preL
+ 1 + numLeft
, preR
, i
+ 1, inR
);
else
return posttravel(preL
+ 1, preL
+ numLeft
, inL
, i
- 1);
}
int main()
{
scanf("%d",&n
);
for(int i
= 0; i
< n
; ++i
)
scanf("%d",&pre
[i
]);
for(int i
= 0; i
< n
; ++i
)
scanf("%d",&in
[i
]);
printf("%d", posttravel(0, n
- 1, 0, n
- 1));
return 0;
}
转载请注明原文地址: https://yun.8miu.com/read-58177.html