[NOIP2001]求先序排列

Posted cq.tiancx

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[NOIP2001]求先序排列相关的知识,希望对你有一定的参考价值。

题目: [NOIP2001]求先序排列 ,哈哈,我们今天来看一道二叉树的递归题嘛,这是选自NOIP上的一道题,好了,我们一起来看看题意吧:

题目描述是复制的,可能有部分显示不对,我就把题目链接放下面!
题目链接: [NOIP2001]求先序排列

题目描述

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

输入描述

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

输出描述

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

示例1

输入

BADC
BDCA

输出

ABCD

思路:

总体思路就是递归的处理左子树和右子树,代码里面有注释!

我们来看看成功AC的代码吧:

#include<bits/stdc++.h>
using namespace std;
string zhong,hou;
void deal(int l1,int r1,int l2,int r2)//l1到r1的中序遍历,  l2到r2的后序遍历
    if(l1>r1||l2>r2) return ;
    cout<<hou[r2];
    int pos=-1;
    for(int i=0;i<=r1;i++) if(zhong[i]==hou[r2]) pos=i;
    deal(l1,pos-1,l2,l2+pos-1-l1);//先看左子树
    deal(pos+1,r1,r2-r1+pos,r2-1);//看右子树

int main()
    cin>>zhong>>hou;
    int len=hou.length();
    deal(0,len-1,0,len-1);
    return 0;


谢谢你的阅读,由于作者水平有限,难免有不足之处,若读者发现问题,还请批评,在留言区留言或者私信告知,我一定会尽快修改的。若各位大佬有什么好的解法,或者有意义的解法都可以在评论区展示额,万分谢谢。
写作不易,望各位老板点点赞,加个关注!

以上是关于[NOIP2001]求先序排列的主要内容,如果未能解决你的问题,请参考以下文章

2001求先序排列

codevs 1013 求先序排列(二叉树遍历)

P1030 求先序排列

蓝桥 - 求先序排列(知中序和后序求先序)

求先序排列

求先序排列