ट्री डेटा संरचना
ट्री कुछ किनारों से जुड़े नोड्स का संग्रह होता है। परंपरागत रूप से, ट्री का प्रत्येक नोड कुछ डेटा और अपने बच्चों के संदर्भ रखता है।
बाइनरी सर्च ट्री
बाइनरी सर्च ट्री एक बाइनरी ट्री है जिसमें कम मान वाले नोड्स बाईं ओर संग्रहीत होते हैं जबकि उच्च मान वाले नोड्स दाईं ओर संग्रहीत होते हैं।
उदाहरण के लिए, एक वैध BST का दृश्य प्रतिनिधित्व:
25 / \ 20 36 / \ / \ 10 22 30 40
आइए अब JavaScript भाषा में अपना स्वयं का बाइनरी सर्च ट्री लागू करें।
चरण 1: नोड क्लास
यह क्लास BST में विभिन्न बिंदुओं पर मौजूद एकल नोड का प्रतिनिधित्व करेगी। BST कुछ डेटा और चाइल्ड संदर्भों को संग्रहीत करने वाले नोड्स का संग्रह है जिन्हें ऊपर वर्णित नियमों के अनुसार रखा जाता है।
class Node{ constructor(data) { this.data = data; this.left = null; this.right = null; }; };कुछ डेटा के साथ इस क्लास को कॉल करके एक नया नोड इंस्टेंस बनाया जा सकता है:
const newNode = new Node(23);
यह डेटा को 23 पर सेट करके और बाएं और दाएं संदर्भ दोनों को null रखकर एक नया नोड इंस्टेंस बनाएगा।
चरण 2: बाइनरी सर्च ट्री क्लास:
class BinarySearchTree{ constructor(){ this.root = null; }; };यह बाइनरी सर्च ट्री क्लास बनाएगा जिसे हम new कीवर्ड के साथ कॉल करके ट्री इंस्टेंस बना सकते हैं।
अब चूंकि हम बुनियादी चीजों के साथ हो चुके हैं, आइए BST के नियमों के अनुसार सही जगह पर एक नया नोड डालने पर आगे बढ़ें।
चरण 3: BST में नोड डालना
class BinarySearchTree{ constructor(){ 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); }; }; }; };उदाहरण
पूर्ण बाइनरी सर्च ट्री कोड:
class Node{ constructor(data) { this.data = data; this.left = null; this.right = null; }; }; class BinarySearchTree{ constructor(){ 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(2);