zl程序教程

您现在的位置是:首页 >  .Net

当前栏目

求先序序列

2023-02-18 16:35:29 时间

题目描述

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

输入格式

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

输出格式

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

输入输出样例

输入 #1
BADC
BDCA
输出 #1
ABCD

 

先序后续的概念:

首先要知道的是,有前序(后序)和中序可以求后序(前序),但是只有前序和后序是不能求得中序的

 

 

前序:1,2,4,5,3

中序:4,2,5,1,3

后序:4,5,2,3,1

 

 

代码:

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

void beford(string in,string after){
    if (in.size()>0){
        char ch =after[after.size()-1];
        cout<<ch;
        int k =in.find(ch);
        beford(in.substr(0,k),after.substr(0,k));//递归左子树
        beford(in.substr(k+1),after.substr(k,in.size()-k-1));//递归右子树
    }
    
}

int main(){
    string inord,aftord;
    cin>>inord;
    cin>>aftord;
    beford(inord,aftord);
    cout<<endl;
}