其他分享
首页 > 其他分享> > 洛谷-P1030 求先序排列

洛谷-P1030 求先序排列

作者:互联网

洛谷-P1030 求先序排列

原题链接:https://www.luogu.com.cn/problem/P1030


题目描述

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

输入格式

2行,均为大写字母组成的字符串,表示一棵二叉树的中序与后序排列。

输出格式

1行,表示一棵二叉树的先序。

输入输出样例

输入 #1

BADC
BDCA

输出 #1

ABCD

C++代码

#include <iostream>
#include <cstring>
#include <queue>
using namespace std;

int l;
char a[10],b[10];
queue<char> q;

void dfs(int s, int e, int pos) {
    if(e-s==1) {
        q.push(a[s]);
        return ;
    }
    for(int i=pos-1;i>=0;--i)
        for(int j=s;j<e;++j)
            if(a[j]==b[i]) {
                q.push(a[j]);
                dfs(s,j,i);
                dfs(j+1,e,i);
                return ;
            }
}

int main() {
    cin>>a>>b;
    l=strlen(a);
    dfs(0,l,l);
    while(!q.empty()) {
        cout<<q.front();
        q.pop();
    }
    cout<<endl;
    return 0;
}

标签:排列,洛谷,求先序,int,P1030,二叉树,格式,include
来源: https://www.cnblogs.com/yuzec/p/13253082.html