선주문 순회 결과가 제공됩니다. 루트보다 작은 요소의 수를 찾아야 합니다.
선주문 순회에서 첫 번째 요소는 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