यहाँ बाइनरीसर्च ट्री क्लास का पूरा कार्यान्वयन है -
उदाहरण
class BinarySearchTree { कंस्ट्रक्टर () {// एक रूट एलिमेंट को अशक्त करने के लिए इनिशियलाइज़ करें। यह जड़ =शून्य; } insertIter (डेटा) { नोड =नया यह दें। नोड (डेटा); // जांचें कि क्या पेड़ खाली है अगर (this.root ===null) {// पहले तत्व के रूप में डालें this.root =node; वापसी; } चलो currNode =this.root; जबकि (सच) { अगर (डेटाroot.data) {वापसी searchRecHelper(data, root.right); }//इसका मतलब है कि तत्व पाया जाता है रिटर्न ट्रू;}/*** रूट और की लेता है और कुंजी के लिए पुनरावर्ती खोज करता है। * यदि यह कुंजी पाता है, तो 3 मामले हो सकते हैं:** 1. यह नोड एक लीफ नोड है . ** उदाहरण:F* A* / \* BC* / / \* DEF** को हटाना इसे हटाने के लिए, हम इसके माता-पिता के कनेक्शन को आसानी से हटा सकते हैं।** A* / \* BC* / /* DE** 2. यह नोड एक बच्चे के साथ कहीं पेड़ के बीच में है।** उदाहरण:B* A* / \* BC* / / \* DEF** को हटाना इसे हटाने के लिए, हम केवल चाइल्ड नोड को पैरेंट नोड की जगह ले सकते हैं उपरोक्त कनेक्शन में* A* / \* DC* / \* EF** 3. इस नोड में दोनों बच्चे हैं। यह एक पेचीदा मामला है।** उदाहरण:C ** A* / \* BC* / / \* DEF* / / \* GHI** को हटाना इस मामले में, हमें या तो उत्तराधिकारी या पूर्ववर्ती को खोजने की आवश्यकता है नोड और इस नोड को * से बदलें। उदाहरण के लिए, यदि हम उत्तराधिकारी के साथ जाते हैं, तो इसका उत्तराधिकारी इससे बड़ा तत्व होगा, * यानी, सही उपट्री में न्यूनतम तत्व। तो हटाने के बाद, पेड़ इस तरह दिखेगा:** A* / \* BH* / / \* DEF* / \* GI** इस तत्व को हटाने के लिए, हमें उत्तराधिकारी के माता-पिता को खोजने की जरूरत है, उनके लिंक को तोड़ें, उत्तराधिकारी के बाएँ * और दाएँ बिंदु को वर्तमान नोड के बाएँ और दाएँ बिंदु बनाएँ। आसान तरीका यह है कि नोड से डेटा को प्रतिस्थापित किया जाए* उत्तराधिकारी के साथ हटा दिया जाए और उत्तराधिकारी को हटा दिया जाए। (कुंजी root.data) {root.right =deleteNodeHelper(root.right, key);रिटर्न रूट;} और {// कोई बच्चा नहीं // केस 1 - एक लीफ नोडिफ (रूट.लेफ्ट ===नल &&रूट। राइट ===नल) {रूट =नल;रिटर्न रूट;}// सिंगल चाइल्ड केसिफ (रूट। लेफ्ट ===नल) रिटर्न रूट। राइट; अगर (रूट। राइट ===नल) रिटर्न रूट। लेफ्ट;// दोनों बच्चे, इसलिए सक्सेसरलेट को खोजने की जरूरत है currNode =root.right; जबकि (currNode.left!==null) {currNode =currNode.left;} root.data =currNode.data;// राइट सबट्री से वैल्यू डिलीट करें। root.right =deleteNodeHelper(root.right, currNode.data);रिटर्न रूट;}}>