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

JavaScript में BST के बाएं पत्तियों का योग ढूंढना


समस्या

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

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

उदाहरण

यदि ट्री इस तरह दिखता है:

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 को विजिट करते हैं। B को भी पोस्ट-ऑर्डर में ट्र

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

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

  1. - JavaScript में सबसे लंबे नॉन-नेगेटिव सम अनुक्रम को खोजना

    समस्याहमें एक JavaScript फ़ंक्शन लिखना है जो इंटीजर्स के अनुक्रम वाला एक ऐरे लेता है, प्रत्येक एलिमेंट में -1 और 1 के बीच का संभावित मान होता है। हमारा फ़ंक्शन उस अनुक्रम के सबसे लंबे उप-भाग का आकार लौटाना चाहिए जिसका योग शून्य या अधिक हो।उदाहरणनिम्नलिखिक कोड है − { let sum = 0; let maxslice =