1. 程式人生 > >模擬題 P1030 求先序排列 洛谷 簡單

模擬題 P1030 求先序排列 洛谷 簡單

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

輸入輸出格式
輸入格式:
22行,均為大寫字母組成的字串,表示一棵二叉樹的中序與後序排列。

輸出格式:
11行,表示一棵二叉樹的先序。

輸入輸出樣例
輸入樣例#1:
BADC
BDCA
輸出樣例#1:
ABCD
解題思路:這個題用兩個陣列,兩個字串。主要是先找到BDCA的最後一個,然後在BADC找到A的位置,輸出A並且把B和DC分開查詢。然後已經輸出的元素給他標記下來以免重複。

#include <iostream>
using namespace std;
#include <string.h> char a[9],b[9]; int a1[9],b1[9]={0}; int room(int x,int y) { if(x==y) { cout<<a[x-1]; b1[x-1]=1; return 0; } int k=0,sum,e,d; sum=y-x+1; for(e=0;e<9;e++) { if(b1[e]==0) k++; if(k==sum) { cout<<b[e]; b1[e]=1; break; } } for(d=0;d<
y;d++) { if(b[e]==a[d]) break; } if(d+1!=x) room(x,d); if(d+1!=y) room(d+2,y); return 0; } int main() { cin>>a>>b; room(1,strlen(a)); return 0; }