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