समस्या
हमें एक जावास्क्रिप्ट फ़ंक्शन लिखना है जो एक बाइनरी सर्च ट्री की जड़ को एकमात्र तर्क के रूप में लेता है।
फ़ंक्शन को बस बीएसटी की बाईं पत्तियों में संग्रहीत डेटा के योग की गणना करनी चाहिए।
उदाहरण के लिए, यदि पेड़ इस तरह दिखता है -
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