• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • YouClaw
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
Sherlockyk
博客园    首页    新随笔    联系   管理    订阅  订阅

求先序排列

求先序排列

Time Limit:1000MS  Memory Limit:65536K

Description

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

Input

中序与后序排列,中间用空格隔开

Output

先序排列

Sample Input

BADC  BDCA 

Sample Output

ABCD 

Source

NOIP2001年第七届全国青少年信息学(计算机)奥林匹克分区联赛复赛普及组试题3

 

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<iostream>
 4 using namespace std;
 5 char sa[10],sb[10];
 6 int len;
 7 int find(char ch){
 8     int i;
 9     for(i=0;i<len;i++){
10         if(sa[i]==ch)return i;
11     }
12 }
13 void DFS(int la,int ra,int lb,int rb){
14     int m=find(sb[rb]);
15     cout<<sb[rb];
16     if(m>la)DFS(la,m-1,lb,rb-ra+m-1);
17     if(m<ra)DFS(m+1,ra,lb+m-la,rb-1); 
18 }
19 int main(){
20     cin>>sa;
21     cin>>sb;
22     len=strlen(sa);
23     DFS(0,len-1,0,len-1);
24 return 0;}

 

posted @ 2018-03-17 11:31  Sherlockyk  阅读(217)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3