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

C++ में बाइनरी ट्री का लेवल ऑर्डर ट्रैवर्सल (Binary Tree Level Order Traversal)


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

C++ में बाइनरी ट्री का लेवल ऑर्डर ट्रैवर्सल (Binary Tree Level Order Traversal)

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

इसे हल करने के लिए हम निम्नलिखित चरणों का पालन करेंगे:

  • नोड्स संग्रहीत करने के लिए कतार que परिभाषित करें
  • रूट को que में डालें।
  • जब तक que खाली नहीं है:
    • item := कतार के सामने की स्थिति पर मौजूद आइटम
    • item का मान प्रिंट करें
    • यदि item का बायां बच्चा null नहीं है, तो item के बाएं को que में डालें
    • यदि item का दायां बच्चा null नहीं है, तो item के दाएं को que में डालें
    • कतार से सामने का तत्व हटाएं

उदाहरण (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;
    }
    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;
    new_node->h_left = 0; new_node->h_right = 0;
    new_node->bf = 0;
    new_node->value = 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);
    while(!que.empty()){
        item = que.front();
        cout << item->value << " ";
        if(item->left != NULL)
            que.push(item->left);
        if(item->right != NULL)
            que.push(item->right);
        que.pop();
    }
}

node *tree::insert_node(node *root, int key){
    if(root == NULL){
        return (get_node(key));
    }
    if(key < root->value){
        root->left = insert_node(root->left, key);
    }
    else if(key > root->value){
        root->right = insert_node(root->right, key);
    }
    return root;
}

int main(){
    node *root;
    tree my_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 << "लेवल-ऑर्डर ट्रैवर्सल: ";
    my_tree.levelorder_traversal(my_tree.root);
}

इनपुट

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

आउटपुट

लेवल-ऑर्डर ट्रैवर्सल: 10 5 16 8 15 20 23
  1. C++ में दिए गए लेवल ऑर्डर ट्रैवर्सल से BST का निर्माण C++ में दिए गए लेवल ऑर्डर ट्रैवर्सल से BST का निर्माण

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

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

    इस खंड में हम बाइनरी सर्च ट्री के लिए लेवल-ऑर्डर ट्रैवर्सल तकनीक देखेंगे।मान लीजिए हमारे पास ऐसा एक ट्री है:ट्रैवर्सल क्रम इस प्रकार होगा: 10, 5, 16, 8, 15, 20, 23एल्गोरिदमlevelOrderTraverse(root): Begin    नोड्स स्टोर करने के लिए कतार que परिभाषित करें    रूट को que में इन्सर्ट

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

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