1. 程式人生 > >求先序排列

求先序排列

大寫字母 class clu font 輸入格式 bad print printf sin

題目描述

給出一棵二叉樹的中序與後序排列。求出它的先序排列。(約定樹結點用不同的大寫字母表示,長度<=8)。

輸入輸出格式

輸入格式:

2行,均為大寫字母組成的字符串,表示一棵二叉樹的中序與後序排列。

輸出格式:

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

輸入輸出樣例

輸入樣例#1:
BADC
BDCA
輸出樣例#1:
ABCD
思路:
  根據樹的後序是根,而中序的前半部分是左樹,而後半部分是右樹。
  再單獨處理左樹和右樹。
#include<cstdio>
#include<iostream>
#include<queue>
#include<cstring>
#include
<cmath> using namespace std; char a[100],b[100]; void work(int L,int R) { int i,j,c; if(L>R) return ; c=0; for(int i=strlen(b+1);i>=1;i--) { for(int j=L;j<=R;j++) if(a[j]==b[i]) { c=j; break; } if(c) break
; } if(c) printf("%c",a[c]); work(L,c-1);work(c+1,R); } int main() { cin>>(a+1)>>(b+1); work(1,strlen(a+1)); return 0; }

 

求先序排列