二叉樹遍歷(flist)(已知中序和按層遍歷,求先序 )


問題 F: 二叉樹遍歷(flist)

時間限制: 1 Sec  內存限制: 128 MB
提交: 11  解決: 9
[提交][狀態][討論版][命題人:quanxing][Edit] [TestData] [同步數據]

題目描述

樹和二叉樹基本上都有先序、中序、后序、按層遍歷等遍歷順序,給定中序和其它一種遍歷的序列就可以確定一棵二叉樹的結構。

假定一棵二叉樹一個結點用一個字符描述,現在給出中序和按層遍歷的字符串,求該樹的先序遍歷字符串。

輸入

兩行,每行是由字母組成的字符串(一行的每個字符都是唯一的),分別表示二叉樹的中序遍歷和按層遍歷的序列。

 

輸出

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

樣例輸入

DBEAC
ABCDE

樣例輸出

ABDEC

提示

#include<iostream> #include<cstring> #include<string> using namespace std; //因為層序是先輸出根節點的,所以可以遞歸查找 string s1,s2; void find(int l1,int r1,int l2,int r2) { int i,j; for(i=l2;i<=r2;i++)//找層次遍歷中優先輸出根節點的位置   { int f=0; for(j=l1;j<=r1;j++) { if(s2[i]==s1[j])//輸出根節點   { cout<<s1[j]; f=1; break; } } if(f) break; } if(j>l1) find(l1,j-1,0,r2);//遍歷左子樹  if(j<r1) find(j+1,r1,0,r2);//遍歷右子樹  } int main() { cin>>s1>>s2; find(0,s1.length()-1,0,s2.length()); return 0; }

 

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM