二叉樹遍歷(已知先序、中序求後序)
阿新 • • 發佈:2018-12-31
【例3-4】求後序遍歷
時間限制: 1000 ms 記憶體限制: 65536 KB
提交數: 11 通過數: 9
【題目描述】
輸入一棵二叉樹的先序和中序遍歷序列,輸出其後序遍歷序列。
【輸入】
共兩行,第一行一個字串,表示樹的先序遍歷,第二行一個字串,表示樹的中序遍歷。樹的結點一律用小寫字母表示。
【輸出】
一行,表示樹的後序遍歷序列。
【輸入樣例】
abdec dbeac
【輸出樣例】
debca
【來源】
No
程式碼:
#include<iostream> #include<cstring> using namespace std; string s1,s2; void calc(int l1,int r1,int l2,int r2) { int m=s2.find(s1[l1]);//找到根節點在中序遍歷中的位置 if(m>l2) calc(l1+1,m-l2+l1,l2,m-1);//遍歷左子樹 if(m<r2) calc(m-l2+l1+1,r1,m+1,r2);//遍歷右子樹 cout<<s1[l1];//輸出根節點 } int main() { cin>>s1>>s2; calc(0,s1.length()-1,0,s2.length()-1); cout<<endl; return 0; }