Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

จำนวนองค์ประกอบที่เล็กกว่ารูทโดยใช้การสั่งผ่านล่วงหน้าของ BST ใน C++


คุณจะได้รับผลลัพธ์ของการสั่งจองล่วงหน้า คุณต้องหาจำนวนองค์ประกอบที่น้อยกว่ารูท

องค์ประกอบแรกในการข้ามผ่านของการสั่งซื้อล่วงหน้าคือรูทของ 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