中序先序到后序 洛谷P1827

洛谷P1827

输入中序先序序列,输出后序

l1-l2为当前中序遍历序列
l3-l4为当前先序遍历序列

#include<bits/stdc++.h>
using namespace std;
string a, b;
void build(int l1, int l2, int l3, int l4) {
    if (l1 > l2 || l3 > l4) return;
    for (int i = l1; i <= l2; i++) {
        if (a[i] == b[l3]) {//分为两部分
            build(l1, i-1, l3+1, l3+i-l1);//输出左子树
            build(i+1, l2, l3+i-l1+1, l4);//输出右子树
            cout << a[i];
        }
    }
}
int main() {
    cin >> a >> b;
    int l = a.size();
    build(0, l-1, 0, l-1);
}

posted @   若把你比作歌  阅读(5)  评论(0编辑  收藏  举报
努力加载评论中...
点击右上角即可分享
微信分享提示