[NOIP2001]求先序排列

简介: [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;
}


相关文章
|
7月前
|
索引
【力扣刷题】两数求和、移动零、相交链表、反转链表
【力扣刷题】两数求和、移动零、相交链表、反转链表
53 2
【力扣刷题】两数求和、移动零、相交链表、反转链表
|
算法 测试技术 C++
C++二分算法习题:判断是否是完全平方数[容易]和排列箱子[容易]
C++二分算法习题:判断是否是完全平方数[容易]和排列箱子[容易]
|
6月前
|
算法 C++
【洛谷 P1090】[NOIP2004 提高组] 合并果子(贪心算法+哈夫曼编码+优先队列)
该编程题目要求设计算法,将不同种类的果子合并成一堆,使得消耗的体力最小。给定果子种类数`n`(1至10000)和每种果子的数量,需输出合并的最小体力值。使用优先队列(最小堆),每次取出两个数量最少的果子堆合并,并更新总体力消耗。样例输入为3种果子(1, 2, 9),输出最小体力耗费为15。提供的AC代码采用C++实现,通过优先队列优化合并顺序。
86 0
|
算法
并查集模板题
并查集模板题
52 0
|
算法
数星星(树状数组模板题)
数星星(树状数组模板题)
64 0
|
移动开发 算法
DFS深度优先算法 —— AcWing 842. 排列数字AcWing 843. n-皇后问题
DFS深度优先算法 —— AcWing 842. 排列数字AcWing 843. n-皇后问题
110 0
剑指offer 33. 之字形打印二叉树
剑指offer 33. 之字形打印二叉树
82 0
|
索引
每日一题[LeetCode 689]三个无重叠子数组的最大和
闲来无事,为了保证日更,从今天开始每天更新一道LeetCode题解。 做题顺序是这样的:随机选择一题“困难”类型的题目。 因本人ACM退役颇久,代码多有疏漏,望多多见谅。
|
算法
LeetCode 周赛 340,质数 / 前缀和 / 极大化最小值 / 最短路 / 平衡二叉树
今天讲 LeetCode 单周赛第 340 场,今天状态不好,掉了一波大分。
107 0