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

जावास्क्रिप्ट में बीएसटी के बाएं पत्तों का योग ढूँढना

<घंटा/>

समस्या

हमें एक जावास्क्रिप्ट फ़ंक्शन लिखना है जो एक बाइनरी सर्च ट्री की जड़ को एकमात्र तर्क के रूप में लेता है।

फ़ंक्शन को बस बीएसटी की बाईं पत्तियों में संग्रहीत डेटा के योग की गणना करनी चाहिए।

उदाहरण के लिए, यदि पेड़ इस तरह दिखता है -

8
/ \
1 10
/ \
5 17

तब आउटपुट होना चाहिए -

const output = 6;

आउटपुट स्पष्टीकरण:

क्योंकि ट्री में 1 और 5 मान वाले दो बाएं पत्ते हैं।

उदाहरण

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

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(5);
BST.insert(3);
BST.insert(6);
BST.insert(6);
BST.insert(9);
BST.insert(4);
BST.insert(7);
const isLeaf = node => {
   if (!node) return false;
      return (node.left === null && node.right === null);
}
const traverseTreeAndSumLeftLeaves = (root, sum = 0) => {
   if (!root) return sum;
   if (isLeaf(root)) return sum;
   if (root.left) {
      if (isLeaf(root.left)) {
         sum += root.left.data;
         traverseTreeAndSumLeftLeaves(root.left, sum);
      } else sum = traverseTreeAndSumLeftLeaves(root.left, sum);
   }
   if (root.right) {
      if (isLeaf(root.right)) return sum;
      else {
         sum = traverseTreeAndSumLeftLeaves(root.right, sum);
      }
   }
   return sum;
};
console.log(traverseTreeAndSumLeftLeaves(BST.root));

आउटपुट

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

7

  1. जावास्क्रिप्ट ट्री में पोस्ट-ऑर्डर ट्रैवर्सल

    इस ट्रैवर्सल विधि में, रूट नोड को अंतिम बार देखा जाता है, इसलिए नाम। सबसे पहले, हम बाएं सबट्री, फिर राइट सबट्री और अंत में रूट नोड को पार करते हैं। हम A, . से शुरू करते हैं और पोस्ट-ऑर्डर ट्रैवर्सल के बाद, हम पहले बाएं सबट्री पर जाते हैंB. बी पोस्ट-ऑर्डर भी किया जाता है। प्रक्रिया तब तक चलती है ज

  1. जावास्क्रिप्ट ट्री में प्री-ऑर्डर ट्रैवर्सल

    इस ट्रैवर्सल मेथड में, रूट नोड को पहले देखा जाता है, फिर लेफ्ट सबट्री और अंत में राइट सबट्री पर। हम A, . से शुरू करते हैं और अग्रिम-आदेश ट्रैवर्सल के बाद, हम सबसे पहले A . पर जाते हैं स्वयं और फिर इसके बाएँ उपप्रकार B पर जाएँ। बी पूर्व-आदेश भी पार किया जाता है। प्रक्रिया तब तक चलती है जब तक सभ

  1. जावास्क्रिप्ट का उपयोग करके सबसे लंबे गैर-ऋणात्मक योग अनुक्रम ढूँढना

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