TZOJ求先序排列

已知后序中序求先序二叉树

1008 : 求先序排列

时间限制(普通/Java):1000MS/3000MS     内存限制:65536KByte

描述

给出一棵二叉树的中序与后序排列。求出它的先序排列。(约定树结点用不同的大写字母表示,长度<=8)。

输入

两行,分别为给定的一棵二叉树的中序与后序排列.

BADC
BDCA

输出

一行,为所求的此二叉树的前序排列.

ABCD

code:

#define _CRT_SECURE_NO_WARNINGS 1
#include
using namespace std;
typedef long long ll;
const int N =1e5 + 5; 
string z, h;
void find(int l1, int r1, int l2, int r2)
{
    if (l1 > r1 || l2 > r2)return;
    cout << h[r2];
    int pos = -1;
    for (int i = l1; i <= r1; i++)
        if (z[i] == h[r2])pos = i;
    find(l1, pos - 1, l2,l2 + pos - 1 - l1);
    find(pos + 1, r1, r2 - r1 + pos, r2 - 1);
}
int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0); cout.tie(0);
    cin >> z >> h;
    int len = z.size();
    find(0, len - 1, 0, len - 1);
    return 0;
}

你可能感兴趣的:(c++,算法,开发语言)