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

जावास्क्रिप्ट में एक बाइनरी ट्री को बदलना

<घंटा/>

मान लीजिए, हमारे पास इस तरह का प्रतिनिधित्व करने वाला एक बाइनरी ट्री है -

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

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

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

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

उदाहरण

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

// class for a single tree node
class Node{
   constructor(val){
      this.val = val;
      this.left = null;
      this.right = null;
   };
};
// class for binary tree
class BinaryTree{
   constructor(){
      // root of the binary tree
      this.root = null;
   };
   insert = (data) => {
      // creating a new node with data
      const newNode = new Node(data);
      // if root is null, then this node will be the root
      if(this.root === null){
         this.root = newNode;
      }else{
         // otherwise we find the correct position to insert this node
         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);
         }
      }
   };
   // function to invert the binary tree
   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);
// original right to left traversal
Tree.traverse(Tree.root);
Tree.invert(Tree.root);
console.log('after inversion');
// traversal right to left after inversion
Tree.traverse(Tree.root);
. के बाद छोड़ दिया

आउटपुट

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

9
7
6
4
3
2
1
after inversion
1
2
3
4
6
7
9

  1. एन-एरी ट्री को बाइनरी ट्री में सी ++ में एन्कोड करें

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

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

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

  1. पायथन में बाइनरी ट्री प्रीऑर्डर ट्रैवर्सल

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