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

C++ में बाइनरी ट्री लेवल ऑर्डर ट्रैवर्सल


मान लीजिए कि हमारे पास एक बाइनरी ट्री है। हमें लेवल ऑर्डर ट्रैवर्सल स्कीम का उपयोग करके इस पेड़ को पार करना होगा। तो अगर पेड़ ऐसा है

C++ में बाइनरी ट्री लेवल ऑर्डर ट्रैवर्सल

ट्रैवर्सल अनुक्रम इस प्रकार होगा - [10, 5, 16, 8, 15, 20, 23]

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

  • नोड्स को स्टोर करने के लिए क्यू को परिभाषित करें
  • क्यू में रूट डालें।
  • जबकि क्यू खाली नहीं है, करें
    • आइटम:=आइटम कतार के सामने की स्थिति में मौजूद है
    • आइटम का मूल्य प्रिंट करें
    • यदि आइटम का बायां भाग रिक्त नहीं है, तो आइटम के बाईं ओर को कतार में डालें
    • यदि आइटम का अधिकार शून्य नहीं है, तो आइटम का अधिकार क्यू में डालें
    • क्यू से फ्रंट एलिमेंट हटाएं

उदाहरण(C++)

एक बेहतर समझ प्राप्त करने के लिए आइए निम्नलिखित कार्यान्वयन को देखें -

#include<iostream>
#include<queue>
using namespace std;
class node{
   public:
      int h_left, h_right, bf, value;
      node *left, *right;
};
class tree{
   private:
      node *get_node(int key);
   public:
      node *root;
      tree(){
         root = NULL; //set root as NULL at the beginning
      }
      void levelorder_traversal(node *r);
      node *insert_node(node *root, int key);
};
node *tree::get_node(int key){
   node *new_node;
   new_node = new node; //create a new node dynamically
   new_node->h_left = 0; new_node->h_right = 0;
   new_node->bf = 0;
   new_node->value = key; //store the value from given key
   new_node->left = NULL; new_node->right = NULL;
   return new_node;
}
void tree::levelorder_traversal(node *root){
   queue <node*> que;
   node *item;
   que.push(root); //insert the root at first
   while(!que.empty()){
      item = que.front(); //get the element from the front end
      cout << item->value << " ";
      if(item->left != NULL) //When left child is present, insert into queue
         que.push(item->left);
      if(item->right != NULL) //When right child is present, insert into queue
         que.push(item->right);
      que.pop(); //remove the item from queue
   }
}
node *tree::insert_node(node *root, int key){
   if(root == NULL){
      return (get_node(key)); //when tree is empty, create a node as root
   }
   if(key < root->value){ //when key is smaller than root value, go to the left
      root->left = insert_node(root->left, key);
   }
   else if(key > root->value){ //when key is greater than root value, go to the right
      root->right = insert_node(root->right, key);
   }
   return root; //when key is already present, do not insert it again
}
main(){
   node *root;
   tree my_tree;
   //Insert some keys into the tree.
   my_tree.root = my_tree.insert_node(my_tree.root, 10);
   my_tree.root = my_tree.insert_node(my_tree.root, 5);
   my_tree.root = my_tree.insert_node(my_tree.root, 16);
   my_tree.root = my_tree.insert_node(my_tree.root, 20);
   my_tree.root = my_tree.insert_node(my_tree.root, 15);
   my_tree.root = my_tree.insert_node(my_tree.root, 8);
   my_tree.root = my_tree.insert_node(my_tree.root, 23);
   cout << "Level-Order Traversal: ";
   my_tree.levelorder_traversal(my_tree.root);
}

इनपुट

[10,5,16,null,8,15,20,null,null,null,null,null,null,null,23]

आउटपुट

Level-Order Traversal: 10 5 16 8 15 20 23

  1. C++ में दिए गए लेवल ऑर्डर ट्रैवर्सल से BST का निर्माण करें

    मान लीजिए कि हमारे पास एक स्तर का ऑर्डर ट्रैवर्सल है। इस ट्रैवर्सल से। हमें पेड़ उत्पन्न करना है तो अगर ट्रैवर्सल [7, 4, 12, 3, 6, 8, 1, 5, 10] जैसा है, तो पेड़ जैसा होगा - इसे हल करने के लिए, हम पुनरावर्ती दृष्टिकोण का उपयोग करेंगे। पहला तत्व जड़ होगा। दूसरा तत्व लेफ्ट चाइल्ड होगा, और तीसरा तत्व

  1. डेटा संरचनाओं में लेवल ऑर्डर ट्री ट्रैवर्सल

    इस खंड में हम बाइनरी सर्च ट्री के लिए लेवल-ऑर्डर ट्रैवर्सल तकनीक देखेंगे। मान लीजिए हमारे पास एक ऐसा पेड़ है - ट्रैवर्सल अनुक्रम इस प्रकार होगा:10, 5, 16, 8, 15, 20, 23 एल्गोरिदम levelOrderTraverse(root): Begin    define queue que to store nodes    insert root into the que. &

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

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