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

Javascriptバイナリ検索ツリーで値を検索する


BSTのプロパティを使用して、BST内の要素を検索します。最初に検索の反復実装を見てみましょう-

searchIter(data) {
   let currNode = this.root;
   while (currNode !== null) {
      if (currNode.data === data) {
         // Found the element!
         return true;
      } else if (data < currNode.data) {
         // Go Left as data is smaller than parent
         currNode = currNode.left;
      } else {
         // Go right as data is greater than parent
         currNode = currNode.right;
      }
   }
   return false;
}

この関数では、ルートをcurrNodeとして開始し、currNodeのデータと比較してデータをチェックします。一致するものが見つかった場合はtrueを返し、そうでない場合は、リーフに到達するか要素が見つかるまで、データとcurrNodeのデータとの関係に従って左または右のいずれかで反復を続けます。

これは、-

を使用してテストできます。

let BST = new BinarySearchTree();
BST.insertIter(10);
BST.insertIter(15);
BST.insertIter(5);
BST.insertIter(50);
BST.insertIter(3);
BST.insertIter(7);
BST.insertIter(12);

console.log(BST.searchIter(2));
console.log(BST.searchIter(12));
console.log(BST.searchIter(50));
console.log(BST.searchIter(-22));
console.log(BST.searchIter(200));

出力

これにより、出力が得られます-

false
true
true
false
false

挿入機能と同様に、検索も再帰的に実装できます。

searchRec(data) {
   return searchRecHelper(data, this.root);
}

繰り返しになりますが、クラスの一部として不要なヘルパー関数を作成する必要があるため、クラス定義の外部でこの関数を作成します-

function searchRecHelper(data, root) {
   if (root === null) {
      // Reached leaf but didn't find it.
      return false;
   }
   if (data < root.data) {
      return searchRecHelper(data, root.left);
   } else if (data > root.data) {
      return searchRecHelper(data, root.right);
   }
   // This means element is found
   return true;
}

これは、-

を使用してテストできます。

let BST = new BinarySearchTree();
BST.insertRec(10);
BST.insertRec(15);
BST.insertRec(5);
BST.insertRec(50);
BST.insertRec(3);
BST.insertRec(7);
BST.insertRec(12);

console.log(BST.searchRec(2));
console.log(BST.searchRec(12));
console.log(BST.searchRec(50));
console.log(BST.searchRec(-22));
console.log(BST.searchRec(200));

出力

これにより、出力が得られます-

false
true
true
false
false

  1. JavaScriptで文字列を検索する方法は?

    以下はJavaScriptで文字列を検索するためのコードです- 例 <!DOCTYPE html> <html lang="en" > <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> <style>  

  2. データ構造の平衡二分探索木

    ここでは、平衡二分探索木とは何かを確認します。二分探索木(BST)は二分木であり、左の子では要素が少なく、右の子では要素が大きくなります。 BSTで要素を検索するための平均時間計算量はO(log n)です。二分探索木の高さに依存します。二分探索木の特性を維持するために、木が歪むことがあります。したがって、歪んだ木は次のようになります- これは実際にはツリーですが、リンクリストのように見えます。この種の木の場合、検索時間はO(n)になります。これは二分木には効果的ではありません。 これらの問題を克服するために、高さのバランスが取れたツリーを作成できます。したがって、木は殺されません。