이 진 트 리 의 뒷 순서 와 중간 순 서 를 옮 겨 다 니 는 결 과 를 알 고 있 습 니 다.


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

Sample Output
DBACEGF
BCAD

귀속 사고:
후 순위 에서 뿌리 노드 를 찾 고 찾 은 후에 중간 순 서 를 옮 겨 다 니 며 뿌리 노드 를 경계 로 왼쪽 서브 트 리 와 오른쪽 서브 트 리 로 나 눕 니 다.
인쇄 루트 노드
왼쪽 나무 로 되돌아가다
오른쪽 하위 트 리 재 귀적
실현 절차:
1. 문자열 배열 a 에 문자열 배열 b 를 순서대로 저장 합 니 다.
2. 재 귀 함 수 는 세 개의 변수 (1) 뿌리 노드 가 a 의 위치 (2) b 에서 작 동 하 는 부분의 시작 위치 와 끝 위 치 를 받 아야 합 니 다.
void recovery(int root,int start,int end)

3. 함수 에 들 어간 후 b 를 옮 겨 다 니 며 루트 노드 위 치 를 찾 고 i 로 위 치 를 저장 합 니 다.
4. 루트 노드 인쇄
5. 왼쪽 트 리 재 귀적
ps: 이 때 전송 할 start 와 end, root 는 왼쪽 트 리 ABC 에 대한 것 입 니 다.
그래서 root = toot - (end - i) - 1;  start 불변;end=i-1;
6. 오른쪽 트 리 재 귀적
같은 EFG 겨냥.   root=root-1; start=i+1;end 불변;
주의: end = = start 일 때 현재 노드 는 잎 노드 이기 때문에 start > end 일 때 귀속 종료 조건 입 니 다.
코드:
#include
#include
void recovery(int root,int start,int end);
char a[1000];
char b[1000];
int main()
{
	while(scanf("%s",a)==1)
	{
		scanf("%s",b);
		int l=strlen(a);
		recovery(l-1,0,l-1);
		printf("
"); } } void recovery(int root,int start,int end) { if(start>end) return ; int i=start;//i while(i

 
 

좋은 웹페이지 즐겨찾기