हम इसमें तत्वों को देखने के लिए 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 के डेटा की तुलना में हमारे डेटा की जांच करते हैं। अगर हमें एक मैच मिलता है तो हम सही लौटते हैं, अन्यथा हम डेटा के संबंध में 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