在 Javascript 二叉搜尋樹中搜索值
我們將利用二叉搜尋樹的屬性來查詢其中的元素。首先,讓我們看一個搜尋的迭代實現 -
示例
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
廣告
資料結構
網路
關係型資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP