[BOJ] 5639 - 이진 검색 트리
문제
코드
#include <iostream>
using namespace std;
int arr[10000];
void pre2post(int s, int e){
if (s >= e) return;
else if (s == e-1){
cout << arr[s] << "\n";
return;
}
int idx = s+1;
for (; idx < e; idx++){
if (arr[s] < arr[idx]) break;
}
pre2post(s+1, idx);
pre2post(idx, e);
cout << arr[s] << "\n";
}
int main(void){
cin.tie(0); cout.tie(0);
ios_base::sync_with_stdio(false);
int idx = 0, num;
while (cin >> num){
arr[idx++] = num;
}
pre2post(0, idx);
return 0;
}
접근
전위 순회는 루트노드, 왼쪽, 오른쪽으로 순회하는 방식이고, 후위 순회는 왼쪽, 오른쪽, 루트 노드로 순회하는 방식이다. 따라서 전위 순서의 첫번째 원소는 루트 노드인 것을 알 수 있고 BST이기 때문에 왼쪽에는 루트보다 작은 값들만 나오는 것도 알고 있다. 이를 통해 루트노드, 왼쪽, 오른쪽 부분으로 나누어서 재귀호출을 통해 해결할 수 있었다.
예시) 전위 순회 : 50(루트) 30 24 5 28 45 (왼쪽) 98 52 60(오른쪽)
Author And Source
이 문제에 관하여([BOJ] 5639 - 이진 검색 트리), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@keybomb/BOJ-5639-이진-검색-트리저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)