คุณจะได้รับผลลัพธ์ของการสั่งจองล่วงหน้า คุณต้องหาจำนวนองค์ประกอบที่น้อยกว่ารูท
องค์ประกอบแรกในการข้ามผ่านของการสั่งซื้อล่วงหน้าคือรูทของ BST มาดูตัวอย่างกัน
ป้อนข้อมูล
preorder_result = [5, 4, 2, 1, 7, 6, 8, 9]
ผลผลิต
3
มีสามองค์ประกอบที่น้อยกว่ารูท รากคือ 5.
อัลกอริทึม
-
เริ่มต้นผลการสั่งซื้อล่วงหน้าในอาร์เรย์
-
เก็บองค์ประกอบแรก เช่น รูทของ BST ไว้ในตัวแปร
-
เขียนลูปที่วนซ้ำจากองค์ประกอบที่ 2 ของผลลัพธ์การสั่งซื้อล่วงหน้า
-
เปรียบเทียบทุกองค์ประกอบด้วยรูท
-
หากองค์ประกอบปัจจุบันมากกว่ารูท ให้เพิ่มจำนวนขึ้น
-
-
คืนค่าการนับ
การนำไปใช้
ต่อไปนี้เป็นการนำอัลกอริธึมข้างต้นไปใช้ใน 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