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

JavaScript में बाइनरी ट्री को उल्टा करना


मान लीजिए, हमारे पास एक बाइनरी ट्री है जिसे इस तरह दर्शाया गया है -

    4
   / \
  2   7
 / \ / \
1  3 6  9

हमें एक JavaScript फ़ंक्शन लिखना है जो इस बाइनरी ट्री की जड़ लेता है और इसे उल्टा करता है।

उपरोक्त बाइनरी ट्री का उल्टा संस्करण इस तरह दिखेगा -

    4
    / \
   7   2
  / \ / \
 9  6 3  1

उदाहरण

इसके लिए कोड होगा -

// बाइनरी ट्री के लिए एकल ट्री नोड की क्लास
class Node{
    constructor(val){
        this.val = val;
        this.left = null;
        this.right = null;
    };
};
// बाइनरी ट्री के लिए क्लास
class BinaryTree{
    constructor(){
        // बाइनरी ट्री की जड़
        this.root = null;
    };
    insert = (data) => {
        // डेटा के साथ एक नया नोड बनाना
        const newNode = new Node(data);
        // यदि जड़ शून्य है, तो यह नोड जड़ होगा
        if(this.root === null){
            this.root = newNode;
        }else{
            // अन्यथा हम इस नोड को डालने के लिए सही स्थिति ढूंढते हैं
            this.insertData(this.root, newNode);
        };
    };
    insertData = (node, newNode) => {
        if(newNode.val < node.val){
            if(node.left === null){
                node.left = newNode;
            }else{
                this.insertData(node.left, newNode);
            }
        }else{
            if(node.right === null){
                node.right = newNode;
            }else{
                this.insertData(node.right, newNode);
            }
        }
    };
    // बाइनरी ट्री को उल्टा करने का फ़ंक्शन
    invert = (node) => {
        if(node === null){
            return;
        };
        [node.left, node.right] = [node.right, node.left];
        this.invert(node.right);
        this.invert(node.left);
    }
    traverse = (node) => {
        if(node === null){
            return;
        };
        this.traverse(node.right);
        console.log(node.val);
        this.traverse(node.left);
    };
};
const Tree = new BinaryTree();
Tree.insert(2);
Tree.insert(7);
Tree.insert(4);
Tree.insert(1);
Tree.insert(9);
Tree.insert(3);
Tree.insert(6);
// मूल दाएं से बाएं ट्रैवर्सल
Tree.traverse(Tree.root);
Tree.invert(Tree.root);
console.log('after inversion');
// उल्टा करने के बाद ट्रैवर्सल दाएं से बाएं
Tree.traverse(Tree.root);

आउटपुट

कंसोल में आउटपुट होगा -

9 7 6 4 3 2 1 after inversion 1 2 3 4 6 7 9
  1. N-ary ट्री को बाइनरी ट्री में एनकोड करें - C++ N-ary ट्री को बाइनरी ट्री में एनकोड करें - C++

    मान लीजिए हमारे पास एक N-ary ट्री है। हमें उस ट्री को एक बाइनरी ट्री में एनकोड करना है। हमें बाइनरी ट्री को N-ary ट्री में डिसीरियलाइज़ करने के लिए डिसीरियलाइज़र भी बनाना है।तो, यदि इनपुट इस तरह हैतो आउटपुट होगाइसे हल करने के लिए, हम इन चरणों का पालन करेंगे −encode() नामक एक फ़ंक्शन परिभाषित करें, ज

  1. C++ में बाइनरी ट्री कैमरे C++ में बाइनरी ट्री कैमरे

    मान लीजिए हमारे पास एक बाइनरी ट्री है; हम ट्री के नोड्स पर कैमरे लगाते हैं। अब प्रत्येक कैमरा एक नोड पर अपने माता-पिता, स्वयं और अपने बच्चों की निगरानी कर सकता है। हमें ट्री के सभी नोड्स की निगरानी के लिए आवश्यक कैमरों की न्यूनतम संख्या ज्ञात करनी है। यदि इनपुट है - तो आउटपुट 1 होगा, क्योंकि सभी क

  1. पायथन में बाइनरी ट्री का प्रीऑर्डर ट्रैवर्सल (Binary Tree Preorder Traversal) पायथन में बाइनरी ट्री का प्रीऑर्डर ट्रैवर्सल (Binary Tree Preorder Traversal)

    मान लीजिए हमारे पास एक बाइनरी ट्री है। हमें उस ट्री का प्रीऑर्डर ट्रैवर्सल लौटाना है। यदि ट्री इस तरह है: तो प्रीऑर्डर ट्रैवर्सल होगा: [3,9,20,15,7] इसे हल करने के लिए हम निम्नलिखित चरणों का पालन करेंगे: res और st नामक दो खाली सूचियाँ बनाएं। node := root जब तक node या st खाली नहीं है: जब