求先序排列

題目描述

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

輸入輸出格式

輸入格式:

222行,均爲大寫字母組成的字符串,表示一棵二叉樹的中序與後序排列。spa

輸出格式:

111行,表示一棵二叉樹的先序。htm

輸入輸出樣例

輸入樣例#1: 
BADC
BDCA
輸出樣例#1: 
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!字符串

相關文章
相關標籤/搜索