题解 :
- 前和中得到后,找到中序中当前根节点的位置,分别dfs左右子树,然后输出当前根节点
#include暑期编程PK赛 得CSDN机械键盘等精美礼品!using namespace std; string pre, in; void dfs(int l1, int r1, int l2, int r2) { if (l1 > r1) return ; int i = l2; while (pre[l1] != in[i]) ++ i; dfs(l1 + 1, l1 + 1 + i - l2 - 1, l2, i - 1); dfs(l1 + 1 + i - l2 - 1 + 1, r1, i + 1, r2); cout << pre[l1]; } int main() { while (cin >> pre >> in) { dfs(0, pre.size() - 1, 0, in.size() - 1); cout << endl; } }



