[BOJ] 5639: 이진 검색 트리(node.js)
🔗 문제 링크 https://www.acmicpc.net/problem/5639 💬 문제
이진 탐색 트리의 전위 순회 결과가 주어졌을 때, 해당 트리의 후위 순회 결과를 출력하는 문제다. 🤔 접근 전위 순회 결과가 주어졌으니, 그걸 토대로 트리를 만들고 후위 순회를 하며 결과를 출력하면 되겠다! 라고 생각했다. 시간이 1초라서 조금 더 빠른 방법이 없나 생각해보다가, 문제에서 주어진 이진 탐색 트리의 특징을 자세히 보았다. 루트를 기준으로 왼쪽도, 오른쪽도 이진 검색 트리니까 두 서브트리를 재귀적으로 나눠 내려간 후, 마지막에 루트 노드를 출력하게 되면 그게 후위 순회 결과였다!
그림과 같이 루트를 기준으로 좌측 - 우측 순서로 서브트리를 탐색하고, 리프노드에 도달하면 출력한다. 그 결과는 트리의 후위 순회 결과와 같다. 순서는 다음과 같다. 입력을 배열에 저장한다. 배열의 첫 원소는 루트이다. 이후 인덱스부터 순회하며 루트보다 큰 값이 나오면 쪼갠다. 쪼개진 서브트리(왼쪽,…