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

जावास्क्रिप्ट में AVL ट्री क्लास


यहां AVL ट्री क्लास का पूरा कार्यान्वयन है:

उदाहरण

class AVLTree {
    constructor() {
        // रूट एलिमेंट को नल से इनिशियलाइज़ करें।
        this.root = null;
    }
    getBalanceFactor(root) {
        return this.getHeight(root.left) - this.getHeight(root.right);
    }
    getHeight(root) {
        let height = 0;
        if (root === null || typeof root == "undefined") {
            height = -1;
        } else {
            height = Math.max(this.getHeight(root.left), this.getHeight(root.right)) + 1;
        }
        return height;
    }
    insert(data) {
        let node = new this.Node(data);
        // जांचें कि ट्री खाली है या नहीं
        if (this.root === null) {
            // पहले एलिमेंट के रूप में इंसर्ट करें
            this.root = node;
        } else {
            insertHelper(this, this.root, node);
        }
    }
    inOrder() {
        inOrderHelper(this.root);
    }
}
AVLTree.prototype.Node = class {
    constructor(data, left = null, right = null) {
        this.data = data;
        this.left = left;
        this.right = right;
    }
};
function insertHelper(self, root, node) {
    (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;
}
function inOrderHelper(root) {
    if (root !== null) {
        inOrderHelper(root.left);
        console.log(root.data);
        inOrderHelper(root.right);
    }
}
function rotationLL(node) {
    let tmp = node.left;
    node.left = tmp.right;
    tmp.right = node;
    return tmp;
}
function rotationRR(node) {
    let tmp = node.right;
    node.right = tmp.left;
    tmp.left = node;
    return tmp;
}
function rotationLR(node) {
    node.left = rotationRR(node.left);
    return rotationLL(node);
}
function rotationRL(node) {
    node.right = rotationLL(node.right);
    return rotationRR(node);
}

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

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

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

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

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

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