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

जावास्क्रिप्ट AVL ट्री में नोड इंसर्ट करना


हम सीख सकते हैं कि AVL ट्री में नोड कैसे इंसर्ट करते हैं। AVL ट्री में इंसर्शन BST के समान ही होते हैं, हमें बस इंसर्ट के दौरान ट्री को बैलेंस करने नामक एक अतिरिक्त चरण करने की आवश्यकता होती है जब भी हम ट्री में नीचे जाते हैं।

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

हम फिर से रिकर्सिव कॉल के लिए एक क्लास मेथड और एक हेल्पर फ़ंक्शन बनाते हैं:

उदाहरण

insert(data) {
    let node = new this.Node(data);
    // जांचें कि ट्री खाली है या नहीं
    if (this.root === null) {
        // पहले एलिमेंट के रूप में इंसर्ट करें
        this.root = node;
    } else {
        insertHelper(this, this.root, node);
    }
}

हेल्पर मेथड

function insertHelper(self, root, node) {
    if (root === null) {
        root = node;
    } else if (node.data < root.data) {
        // बाएं जाएं!
        root.left = insertHelper(self, root.left, node);
        // बैलेंस फैक्टर की जांच करें और उपयुक्त रोटेशन करें
        if (root.left !== null && self.getBalanceFactor(root) > 1) {
            if (node.data > root.left.data) {
                root = rotationLL(root);
            } else {
                root = rotationLR(root);
            }
        }
    } else if (node.data > root.data) {
        // दाएं जाएं!
        root.right = insertHelper(self, root.right, node);
        // बैलेंस फैक्टर की जांच करें और उपयुक्त रोटेशन करें
        if (root.right !== null && self.getBalanceFactor(root) < -1) {
            if (node.data > root.right.data) {
                root = rotationRR(root);
            } else {
                root = rotationRL(root);
            }
        }
    }
    return root;
}

आप इसका परीक्षण इस तरह कर सकते हैं:

उदाहरण

let AVL = new AVLTree();
AVL.insert(10);
AVL.insert(15);
AVL.insert(5);
AVL.insert(50);
AVL.insert(3);
AVL.insert(7);
AVL.insert(12);
AVL.inOrder();

आउटपुट

इससे निम्न आउटपुट मिलेगा:

3 5 7 10 12 15 50

  1. जावास्क्रिप्ट में प्रिम एल्गोरिदम जावास्क्रिप्ट में प्रिम एल्गोरिदम

    प्रिम का एल्गोरिदम एक लालची एल्गोरिदम है जो वेटेड अनडायरेक्टेड ग्राफ के लिए न्यूनतम स्पैनिंग ट्री ढूंढता है। यह एजेज का एक सबसेट ढूंढता है जो एक ट्री बनाता है जिसमें हर वर्टेक्स शामिल होता है, जहां ट्री में सभी एजेज का कुल वजन न्यूनतम होता है। एल्गोरिदम एक मनमाने शुरुआती वर्टेक्स से, एक समय में एक

  1. डेटा स्ट्रक्चर में बाइनरी ट्री ट्रैवर्सल डेटा स्ट्रक्चर में बाइनरी ट्री ट्रैवर्सल

    इस खंड में हम बाइनरी सर्च ट्री में मौजूद कीज़ को ट्रैवर्स करने के लिए विभिन्न ट्रैवर्सल एल्गोरिदम देखेंगे। ये ट्रैवर्सल हैं: इनऑर्डर ट्रैवर्सल, प्रीऑर्डर ट्रैवर्सल, पोस्टऑर्डर ट्रैवर्सल और लेवल ऑर्डर ट्रैवर्सल।मान लीजिए हमारे पास ऐसा एक ट्री है:इनऑर्डर ट्रैवर्सल क्रम इस प्रकार होगा: 5 8 10 15 16 20

  1. Python में n-ary ट्री का रूट खोजने का प्रोग्राम Python में n-ary ट्री का रूट खोजने का प्रोग्राम

    मान लीजिए, हमें एक n-ary ट्री के नोड्स एक सरणी में दिए गए हैं। हमें ट्री को पुनर्निर्मित करके उसका रूट नोड ढूंढना और वापस करना है। वापस किए गए नोड से पूरा ट्री प्रीऑर्डर नोटेशन में प्रदर्शित करना है। इसलिए, यदि इनपुट निम्न ट्री है: तो आउटपुट होगा: [14, 27, 32, 42, 56, 65] हम ट्री के प्रीऑर्डर ट्रै