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

जावास्क्रिप्ट में बाइनरी सर्च ट्री में मोड ढूँढना

<घंटा/>

मोड:

डेटा के एक सेट का मोड केवल वह संख्या है जो डेटा के उस सेट में सबसे अधिक बार होती है। उदाहरण के लिए, 3 डेटासेट 2, 3, 1, 3, 4, 2, 3, 1 का मोड है क्योंकि यह अधिकतर बार होता है।

बाइनरी सर्च ट्री

एक ट्री डीएस एक वैध बाइनरी सर्च ट्री है यदि यह निम्नलिखित शर्तों को पूरा करता है -

  • नोड के बाएं उपट्री में केवल ऐसे नोड होते हैं जिनकी कुंजी नोड की कुंजी से कम या उसके बराबर होती है।

  • नोड के दाएँ उपट्री में केवल नोड होते हैं जिनकी कुंजी नोड की कुंजी से अधिक या उसके बराबर होती है।

  • बाएँ और दाएँ सबट्री भी बाइनरी सर्च ट्री होने चाहिए।

समस्या

हमें एक जावास्क्रिप्ट फ़ंक्शन लिखने की आवश्यकता है जो एक बीएसटी रूट को एकमात्र तर्क के रूप में लेता है। बीएसटी में शायद या अधिकतर डुप्लीकेट हो सकते हैं। हमें पेड़ द्वारा संग्रहीत डेटा के मोड को खोजने और वापस करने की आवश्यकता है।

उदाहरण

इसके लिए कोड होगा -

class Node{
   constructor(data) {
      this.data = data;
      this.left = null;
      this.right = null;
   };
};
class BinarySearchTree{
   constructor(){
      // root of a binary seach tree
      this.root = null;
   }
   insert(data){
      var newNode = new Node(data);
      if(this.root === null){
         this.root = newNode;
      }else{
         this.insertNode(this.root, newNode);
      };
   };
   insertNode(node, newNode){
      if(newNode.data < node.data){
         if(node.left === null){
            node.left = newNode;
         }else{
            this.insertNode(node.left, newNode);
         };
      } else {
         if(node.right === null){
            node.right = newNode;
         }else{
            this.insertNode(node.right,newNode);
         };
      };
   };
};
const BST = new BinarySearchTree();
BST.insert(1);
BST.insert(3);
BST.insert(3);
BST.insert(2);
BST.insert(3);
BST.insert(2);
const findMode = function(root) {
   let max = 1;
   const hash = {};
   const result = [];
   const traverse = node => {
      if (hash[node.data]) {
         hash[node.data] += 1;
         max = Math.max(max, hash[node.data]);
      } else {
         hash[node.data] = 1;
      };
      node.left && traverse(node.left);
      node.right && traverse(node.right);
   };
   if(root){
      traverse(root);
   };
   for(const key in hash) {
      hash[key] === max && result.push(key);
   };
   return +result[0];
};
console.log(findMode(BST.root));

आउटपुट

और कंसोल में आउटपुट होगा -

3

  1. इष्टतम बाइनरी सर्च ट्री

    पूर्णांकों का एक सेट क्रमबद्ध क्रम में दिया गया है और एक अन्य सरणी freq आवृत्ति गणना के लिए दिया गया है। हमारा काम सभी खोजों के लिए न्यूनतम लागत खोजने के लिए उन डेटा के साथ एक बाइनरी सर्च ट्री बनाना है। उप-समस्याओं के समाधान को हल करने और संग्रहीत करने के लिए एक सहायक सरणी लागत [एन, एन] बनाई गई है।

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

    मान लीजिए कि हमारे पास एक बाइनरी सर्च ट्री है, अब इस बीएसटी के दो तत्वों की अदला-बदली पर विचार करें, इसलिए हमें इस बाइनरी सर्च ट्री को पुनर्प्राप्त करना होगा। तो अगर दिया गया पेड़ नीचे जैसा है (पहला वाला), तो बरामद पेड़ होगा (दूसरा वाला) - इसे हल करने के लिए, हम इन चरणों का पालन करेंगे - नोड्

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

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