P1030 求先序排列

题目描述

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

输入输出格式

输入格式:

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

输出格式:

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

输入输出样例

输入样例#1: 复制
 
   
BADC BDCA
代码:
#include<bits/stdc++.h>
using namespace std;
string s1,s2;
void dfs(int l1,int r1,int l2,int r2)
{
    int m=s1.find(s2[r2]);
    cout<<s2[r2];
    if(m>l1) dfs(l1,m-1,l2,r2-(r1-m)-1);//m>l1,有左树,r1-m为右子树结点数
    if(m<r1) dfs(m+1,r1,l2+m-l1,r2-1);//m<l2,有右树,m-l1为左子树节点数
}
int main()
{
    cin>>s1;
    cin>>s2;
    dfs(0,s1.length()-1,0,s1.length()-1);
    return 0;
}

输出样例#1: 复制
 
   
ABCD

猜你喜欢

转载自blog.csdn.net/sunpeishuai/article/details/79855125