給出一棵二叉樹的中序與後序排列。求出它的先序排列。(約定樹結點用不一樣的大寫字母表示,長度≤8 \le 8≤8)。html
222行,均爲大寫字母組成的字符串,表示一棵二叉樹的中序與後序排列。spa
輸出格式:111行,表示一棵二叉樹的先序。htm
BADC BDCA
ABCD
思路:
step1:找到根並輸出
step2:將中序,後序各分爲左右兩棵子樹;blog
step3:遞歸,重複step1,2;遞歸
代碼:
#include<cstdio> #include<cstring> using namespace std; char s1[10],s2[10]; void dfs(int l,int r,int x){ printf("%c",s2[r+x]); for(int i=0;i<strlen(s1);i++){ if(s2[r+x]==s1[i]){ if(l<i)dfs(l,i-1,x);//遍歷左兒子 if(i<r)dfs(i+1,r,x-1);//遍歷右兒子 } } } int main(){ scanf("%s%s",s1,s2); int l=0,r=strlen(s1)-1,x=0; dfs(l,r,x);//dfs return 0; }
OVER!字符串