1138 Postorder Traversal (25分)
Given the preorder and inorder traversal sequences, you are supposed to output the first number of the postorder traversal sequence
先序中序转后序,输出后序第一个结点
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
vector<int>pre, in;
vector<int>post;
void postOrder(int root, int start, int end)
{
if (start > end) return;
int index = start;
while (in[index] != pre[root])index++;
postOrder(root+1,start,index-1);
postOrder(root +index - start +1 ,index+1,end);
post.push_back(pre[root]);
return;
}
int main()
{
freopen("input.txt", "r", stdin);
int n;
cin >> n;
pre.resize(n);
in.resize(n);
for (int i = 0; i < n; i++)cin >> pre[i];
for (int i = 0; i < n; i++)cin >> in[i];
postOrder(0,0, n-1);
cout << post[0];
return 0;
}