1. 程式人生 > >求先序排列(二叉樹已知中序和後序,求先序)

求先序排列(二叉樹已知中序和後序,求先序)

ostream ble sta EDA 題目 sam test c++ adc

問題 A: [2001_p3]求先序排列

時間限制: 1 Sec 內存限制: 125 MB
提交: 90 解決: 73

題目描述

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

輸入

每個測試文件只包含一組測試數據,每組輸入包含兩行,第一行輸入一個字符串表示二叉樹的中序排列,第二行輸入一個字符串表示二叉樹的後序排列。

輸出

對於每組輸入數據,輸出二叉樹的先序排列。

樣例輸入

BADC
BDCA

樣例輸出

ABCD

提示

#include<iostream>
#include
<bits/stdc++.h> using namespace std; string s1,s2; void print(int l1,int r1,int l2,int r2) { //cout<<" "<<l1<<" "<<r1<<" "<<l2<<" "<<r2<<endl; /*if(r1<=l1) { cout<<s1[l1]; return; } if(r2<=l1) { cout<<s2[l1]; return; }
*/ int k=-1; for(int i=l1;i<r1;i++) { if(s1[i]==s2[r2-1]) { cout<<s1[i]; k=i; break; } } //cout<<"k "<<k<<endl; if(k>l1) { //cout<<"進入左"<<endl; print(l1,k,l2,k-l1+l2); }
if(r1>k+1) { //cout<<"進入右"<<endl; print(k+1,r1,k-l1+l2,r2-1); } } int main() { cin>>s1>>s2; print(0,s1.length(),0,s2.length()); return 0; }

[提交][狀態][Edit] [TestData]

求先序排列(二叉樹已知中序和後序,求先序)