POJ2255 Tree Recovery 题解 根据前序+中序求二叉树的后序遍历

题目链接:http://poj.org/problem?id=2255

递归经典习题。具体见代码:

#include <iostream>
#include <cstring>
using namespace std;
char a[111], b[111];
void dfs(int L1, int L2, int n) {
    for (int i = 0; i < n; i ++) if (b[L2+i] == a[L1]) {
        int sz1 = i, sz2 = n - i - 1;
        if (sz1 > 0) dfs(L1+1, L2, sz1);
        if (sz2 > 0) dfs(L1+sz1+1, L2+i+1, sz2);
        cout << a[L1];
    }
}
int main() {
    while (cin >> a >> b) {
        int n = strlen(a);
        dfs(0, 0, n);
        puts("");
    }
    return 0;
}
posted @ 2021-03-17 23:13  quanjun  阅读(89)  评论(0)    收藏  举报