华师一附中OI组

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1656|回复: 2
打印 上一主题 下一主题

P1030 求先序排列

[复制链接]

738

主题

1485

帖子

5422

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
5422
跳转到指定楼层
楼主
发表于 2018-5-5 19:06:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
https://www.luogu.org/problemnew/show/P1030
题目描述
给出一棵二叉树的中序与后序排列。求出它的先序排列。(约定树结点用不同的大写字母表示,长度<=8)。

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

输出格式:
1行,表示一棵二叉树的先序。

输入输出样例
输入样例#1:
BADC
BDCA
输出样例#1:
回复

使用道具 举报

9

主题

158

帖子

470

积分

华一学生

积分
470
QQ
沙发
发表于 2018-5-5 20:26:13 | 只看该作者
  1. #include<iostream>
  2. using namespace std;
  3. string s,mid,bk;
  4. void ms(string a,string b)
  5. {
  6.     if(a.size()>0)
  7.     {
  8.         int l=b.size();
  9.         char ch=b[l-1];
  10.         cout<<ch;
  11.         int k=a.find(ch);
  12.         ms(a.substr(0,k),b.substr(0,k));
  13.         ms(a.substr(k+1),b.substr(k,a.size()-k-1));
  14.     }
  15. }
  16. int main()
  17. {
  18.     cin>>mid>>bk;
  19.     ms(mid,bk);
  20.     return 0;
  21. }
复制代码
回复 支持 反对

使用道具 举报

50

主题

215

帖子

619

积分

高级会员

Rank: 4

积分
619
板凳
发表于 2018-9-7 17:43:05 | 只看该作者
  1. #include<iostream>
  2. using namespace std;
  3. string sf,sa;
  4. void w(string x,string y)
  5. {
  6.     if(x.size()<1)return;
  7.     char ch=y[y.size()-1];
  8.     cout<<ch;
  9.     if(x.size()<=1)return;
  10.     string x1,x2,y1,y2;
  11.     int i=0;
  12.     while(x[i]!=ch)
  13.     {
  14.         x1+=x[i];
  15.         y1+=y[i];
  16.         i++;
  17.     }
  18.     w(x1,y1);
  19.     for(int j=i+1;j<x.size();j++)
  20.     {
  21.         x2+=x[j];
  22.         y2+=y[j-1];
  23.     }
  24.     w(x2,y2);
  25. }
  26. int main()
  27. {
  28.     cin>>sf>>sa;
  29.     w(sf,sa);
  30.     return 0;
  31. }
复制代码
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|服务支持:DZ动力|华师一附中OI组  

GMT+8, 2024-12-27 00:40 , Processed in 0.100817 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表