C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C++でBSTのプレオーダートラバーサルを使用したルートよりも小さい要素の数


事前注文トラバーサルの結果が表示されます。ルートよりも小さい要素の数を見つける必要があります。

プレオーダートラバーサルの最初の要素は、BSTのルートです。例を見てみましょう。

入力

preorder_result = [5, 4, 2, 1, 7, 6, 8, 9]

出力

3

ルートよりも小さい要素が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

  1. C++を使用して配列のすべての要素を削除するために必要な操作の最小数。

    問題の説明 整数配列arrが与えられた場合、タスクは、配列のすべての要素を削除するために必要な最小数の操作を出力することです。制限に続いて要素を削除している間- 配列から任意の要素をランダムに選択でき、それで割り切れるすべての要素を配列から削除できます arr [] ={2、4、15、10、8、5、3}の場合、すべての要素を削除するには3つの操作が必要です- 2を選択すると、{2、4、10、8}が削除されます 5を選択すると、{5、15}が削除されます 3を選択すると、{3}が削除されます アルゴリズム 1. Sort the array in ascending or

  2. C ++を使用して、配列内の数値の頻度を見つけます。

    配列があるとします。 n個の異なる要素があります。配列内の1つの要素の頻度を確認する必要があります。 A =[5、12、26、5、3、4、15、5、8、4]とすると、5の頻度を見つけようとすると、3になります。 これを解決するために、左から配列をスキャンします。要素が指定された数と同じである場合は、カウンターを増やします。それ以外の場合は、配列がなくなるまで次の要素に進みます。 例 #include<iostream> using namespace std; int countElementInArr(int arr[], int n, int e) {   &nbs