文章
19
粉丝
21
获赞
5
访问
19.0k
# include <bits/stdc++.h>
using namespace std;
const int N = 5e4 + 10;
int pre[N],mid[N],n;
unordered_map<int,int> M; // 记录某个点在中序序列的位置
vector<int> back;
void build(int ml,int mr,int pl,int pr){ // 建立对应区间的子树并记录该子树的后序序列
if (mr < ml) return;
int root = pre[pl];
int k = M[root];
// 建立左右子树并记录后序序列
build(ml,k - 1,pl + 1,pl - ml + k);
build(k + 1,mr,pr - mr + k + 1,pr);
back.push_back(root);
}
int main (void){
scanf("%d",&n);
for (int i = 1; i <= n; ++i) scanf(...
登录后发布评论
暂无评论,来抢沙发