求先序排列

Author Avatar
Axell 8月 21, 2018
  • 在其它设备中阅读本文章

求先序排列

题目描述

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

输入输出格式

输入格式:

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

输出格式:

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

输入输出样例

输入样例 #1:

BDCA

输出样例 #1:

ABCD

代码

#include <bits/stdc++.h>
using namespace std;

char a[15],b[15];

void dfs(int i1,int j1,int i2,int j2){
    if (i1>j1||i2>j2) return;
    if (i1==j1){
        cout<<a[j1];
        return;
    }
    cout<<b[j2];
    for (int k=i1;k<=j1;++k){
        if (a[k]==b[j2]){
            dfs(i1,k-1,i2,j2-j1+k-1);
            dfs(k+1,j1,i2+k-i1,j2-1);  //注意
            return;
        }
    }
}

int main(){
    cin>>a+1;
    cin>>b+1;
    dfs(1,strlen(a+1),1,strlen(a+1));
    return 0;
}

知识共享许可协议
本作品采用知识共享署名-非商业性使用-相同方式共享 3.0 未本地化版本许可协议进行许可。

本文链接:https://hs-blog.axell.top/archives/19/