中序先序到後序 洛谷1827

若把你比作歌發表於2024-05-24

洛谷P1827

輸入中序先序序列,輸出後序

#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);
}

l1-l2為當前中序遍歷序列
l3-l4為當前先序遍歷序列

相關文章