선주문 순회 결과가 제공됩니다. 루트보다 작은 요소의 수를 찾아야 합니다.
선주문 순회에서 첫 번째 요소는 BST의 루트입니다. 예를 들어 보겠습니다.
입력
preorder_result = [5, 4, 2, 1, 7, 6, 8, 9]
출력
3
루트보다 작은 세 가지 요소가 있습니다. 루트는 5입니다.
알고리즘
-
선주문 결과를 배열로 초기화합니다.
-
첫 번째 요소, 즉 BST의 루트를 변수에 저장합니다.
-
선주문 결과의 두 번째 요소부터 반복하는 루프를 작성하세요.
-
모든 요소를 루트와 비교합니다.
-
현재 요소가 루트보다 크면 카운트를 증가시킵니다.
-
-
카운트를 반환합니다.
구현
다음은 위의 알고리즘을 C++로 구현한 것입니다.
#include <bits/stdc++.h>
using namespace std;
int getElementsCount(int arr[], int n) {
if (n < 0) {
return 0;
}
int i, root = arr[0], count = 0;
for(i = 1; i < n; i++) {
if(arr[i] < root) {
count += 1;
}
}
return count;
}
int main() {
int preorder[] = {5, 4, 2, 1, 7, 6, 8, 9};
int n = 8;
cout << getElementsCount(preorder, n) << endl;
return 0;
} 출력
위의 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다.
3