हम BST के गुण का उपयोग करके इसमें एलिमेंट्स को खोजने जा रहे हैं। आइए पहले सर्च के एक इटरेटिव कार्यान्वयन को देखते हैं:
उदाहरण
searchIter(data) {
let currNode = this.root;
while (currNode !== null) {
if (currNode.data === data) {
// एलिमेंट मिल गया!
return true;
} else if (data < currNode.data) {
// बाएं जाएं क्योंकि डेटा पैरेंट से छोटा है
currNode = currNode.left;
} else {
// दाएं जाएं क्योंकि डेटा पैरेंट से बड़ा है
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) {
// लीफ पर पहुंच गए लेकिन नहीं मिला।
return false;
}
if (data < root.data) {
return searchRecHelper(data, root.left);
} else if (data > root.data) {
return searchRecHelper(data, root.right);
}
// इसका मतलब एलिमेंट मिल गया
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