Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Javascript

जावास्क्रिप्ट में बाइनरी सर्च ट्री क्लास

<घंटा/>

यहाँ बाइनरीसर्च ट्री क्लास का पूरा कार्यान्वयन है -

उदाहरण

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);रिटर्न रूट;}}> 
  1. C++ में बाइनरी सर्च ट्री इटरेटर

    मान लीजिए हम बाइनरी ट्री के लिए एक इटरेटर बनाना चाहते हैं। दो तरीके होंगे। अगला () विधि अगले तत्व को वापस करने के लिए है, और hasNext () विधि बूलियन मान वापस करने के लिए है, जो इंगित करेगा कि अगला तत्व मौजूद है या नहीं। तो अगर पेड़ जैसा है - और फ़ंक्शन कॉल का क्रम [अगला (), अगला (), है नेक्स्ट (),

  1. C++ में बाइनरी ट्री टू बाइनरी सर्च ट्री रूपांतरण

    एक बाइनरी ट्री एक विशेष प्रकार का पेड़ है जिसमें पेड़ के प्रत्येक नोड में अधिकतम दो बच्चे नोड हो सकते हैं। इन चाइल्ड नोड्स को राइट चाइल्ड और लेफ्ट चाइल्ड के रूप में जाना जाता है। एक साधारण बाइनरी ट्री है - बाइनरी सर्च ट्री (BST) एक विशेष प्रकार का वृक्ष है जो निम्नलिखित नियमों का पालन करता है -

  1. सी # में बाइनरी सर्च

    द्विआधारी खोज क्रमबद्ध सरणी पर कार्य करता है। मान की तुलना सरणी के मध्य तत्व से की जाती है। यदि समानता नहीं मिलती है, तो आधा भाग समाप्त हो जाता है जिसमें मूल्य नहीं होता है। इसी तरह दूसरे आधे हिस्से की तलाशी ली जाती है। यहाँ हमारे सरणी में मध्य तत्व है। मान लीजिए कि हमें 62 खोजने की जरूरत है, फिर ब