알고스팟 문제 링크: https://algospot.com/judge/problem/read/TRAVERSAL
트리의 전위순회와 중위순회 결과가 주어졌을때, 해당 트리의 후위 순회를 출력하는 문제이다.
전위순회 결과의 첫번째 원소는 해당 트리의 루트이고, 중위순회 결과에서 루트를 찾아 루트의 왼쪽은 왼쪽 서브트리 오른쪽은 오른쪽 서브트리로 나눌 수 있다.
또한 이렇게 해서 얻은 각각의 서브트리의 크기를 이용해서 전위순회 또한 왼쪽 서브트리의 출력과 오른쪽 서브트리의 출력을 구분 할 수있다.
이제 전위순회와 중위순회를 각각 왼쪽 서브트리와 오른쪽 서브트리로 나눌 수 있으므로 나눠서 재귀호출한다.
코드 원본: https://github.com/sbl133/JongmanBook/blob/main/21.%20Tree%20traversal/TRAVERSAL.cpp
댓글을 통한 코드리뷰, 질문, 지적 언제든 환영입니다!
reference: 프로그래밍 대회에서 배우는 알고리즘 문제해결전략2
'Algorithm > algospot' 카테고리의 다른 글
algospot 너드인가, 너드가 아닌가? 2 (문제 ID: NERD2) c++ (0) | 2021.10.07 |
---|---|
algospot 요새 (문제 ID: FORTRESS) c++ (0) | 2021.10.06 |
algospot 말버릇 (문제 ID: HABIT) c++ (0) | 2021.10.04 |
algospot 재하의 금고 (문제 ID: JAEHASAFE) c++ (0) | 2021.09.30 |
algospot 외계 신호 분석 (문제 ID: ITES) c++ (0) | 2021.09.28 |