给定二叉树的前序中序遍历,求其后续遍历。
#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N = 1e5 + 5;
string a, b;
struct node {
char c;
int l, r;
} t[N];
int cnt;
int work(int l, int r) {
int i = l;
for(; i < r; i++) if(a[i] == b[i]) break;
if(l >= r || i == r) return 0;
t[++cnt].c = a[l];
t[cnt].l = work(l + 1, i - 1);
t[cnt].r = work(i + 1, r);
return i;
}
void dfs(int x) {
if(t[x].l) dfs(t[x].l);
if(t[x].r) dfs(t[x].r);
cout<<t[x].c;
}
signed main() {
cin>>a>>b;
work(0, a.length() - 1);
dfs(1);
return 0;
}