이 진 트 리 의 응용

이 진 트 리 재건
시간 제한:
1000 ms  |  메모리 제한:
65535 KB
난이도:
3
묘사 하 다.
제목 은 간단 합 니 다. 이 진 트 리 의 뒷 순서 와 중간 순 서 를 드 리 고 앞 순 서 를 구 합 니 다 (So easy!).
입력
여러 그룹의 데이터 (100 그룹 이하) 를 입력 하여 파일 로 끝 냅 니 다.
각 그룹의 데 이 터 는 한 줄 에 불과 합 니 다. 두 문자열 을 포함 하고 중간 은 빈 칸 으로 구분 되 며 각각 이 진 트 리 의 뒷 순서 와 중간 순서 (문자열 길이 가 26 보다 적 고 입력 데 이 터 는 합 법 적 임) 를 표시 합 니 다.
출력
각 그룹의 출력 데 이 터 는 단독으로 한 줄 을 차지 하고 출력 은 우선 순위 서열 에 대응 합 니 다.
샘플 입력
ACBFGED ABCDEFG
CDAB CBAD

샘플 출력
DBACEGF
BCAD

근원
오리지널
업로드 자
TC_황 평
사고방식: 간단 한 예 를 들다
         후 순위: CDAB
         중앙 순서: CBAD
 
후 서 는 좌우 근 이 고 중 서 는 왼쪽 근 오른쪽 이 며 전 서 는 뿌리 좌우 이기 때문에 후 서 의 마지막 요소 B 는 뿌리 이 고 그 다음 에 B 가 중 서 에 있 는 위 치 를 찾 는 것 은 아래 표 1 이다.
         중간 순서 에서 B 의 왼쪽 (왼쪽 뿌리) 은 C 입 니 다.
B 의 오른쪽 (오른쪽 자근) 은 AD 이 고 다시 앞 순서 로 돌아 가면 C 가 뿌리 인 것 을 발견 하고 그 후에 방법 이 일치 하 는 것 으로 유추 된다.
         그러므로 귀속 으로 이 문 제 를 실현 할 수 있다!
코드:
#include 
#include 

void travel(char post[], char in[], int n){
	int i = 0;
	if(n > 0){
            printf("%c",post[n-1]);
		while(in[i] != post[n-1])
		   i ++;
	    travel(post, in, i);
	    travel(post+i, in+i+1, n-1-i);
	}
}
int main(void){
	char post[26], in[26];
	while(scanf("%s%s", post, in) != EOF ){
		int n = strlen( post );
		travel(post, in, n);
		printf("
"); } return 0; }

좋은 웹페이지 즐겨찾기