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)になります。これは二分木には効果的ではありません。 これらの問題を克服するために、高さのバランスが取れたツリーを作成できます。したがって、木は殺されません。