समस्या
हमें एक 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