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

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


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

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

इसे हल करने के लिए, हम रिकर्सिव दृष्टिकोण का उपयोग करेंगे। पहला तत्व रूट होगा। दूसरा तत्व लेफ्ट चाइल्ड होगा, और तीसरा तत्व राइट चाइल्ड होगा (यदि BST की शर्त पूरी होती है), यह गुण सभी तत्वों के लिए संतुष्ट होगा। तो हम इन चरणों का पालन करेंगे -

  • सबसे पहले हमें ऐरे का पहला तत्व लेना होगा, और इसे रूट बनाना होगा।

  • फिर दूसरा तत्व लें। यदि यह रूट से छोटा है, तो इसे लेफ्ट चाइल्ड बनाएं अन्यथा राइट चाइल्ड

  • फिर चरण 2 को रिकर्सिवली कॉल करके BST बनाएं।

उदाहरण

#include <iostream> 
using namespace std; 

class Node {
public:
    int data;
    Node *left, *right;
};

Node* getNode(int data) {
    Node* newNode = new Node;
    newNode->data = data;
    newNode->left = newNode->right = NULL;
    return newNode;
}

Node* lvlOrd(Node* root, int data) {
    if (root == NULL) {
        root = getNode(data);
        return root;
    }
    if (data <= root->data)
        root->left = lvlOrd(root->left, data);
    else
        root->right = lvlOrd(root->right, data);
    return root;
}

Node* makeTree(int arr[], int n) {
    if (n == 0)
        return NULL;
    Node* root = NULL;
    for (int i = 0; i < n; i++)
        root = lvlOrd(root, arr[i]);
    return root;
}

void inord(Node* root) {
    if (!root)
        return;
    inord(root->left);
    cout << root->data << " ";
    inord(root->right);
}

int main() {
    int arr[] = {7, 4, 12, 3, 6, 8, 1, 5, 10};
    int n = sizeof(arr) / sizeof(arr[0]);
    Node* root = makeTree(arr, n);
    cout << "Inorder Traversal: ";
    inord(root);
}

आउटपुट

Inorder Traversal: 1 3 4 5 6 7 8 10 12

  1. C++ प्रोग्राम: लेवल ऑर्डर ट्रैवर्सल लाइन दर लाइन प्रिंट करना C++ प्रोग्राम: लेवल ऑर्डर ट्रैवर्सल लाइन दर लाइन प्रिंट करना

    दिए गए बाइनरी ट्री में, फ़ंक्शन को ट्री के लेवल ऑर्डर ट्रैवर्सल को लाइन दर लाइन ढूंढना होगा। लेवल ऑर्डर ट्रैवर्सल: लेफ्ट रूट राइट, जिसका अर्थ है पहले किसी नोड के बाएं बच्चे को प्रिंट करें फिर रूट का मान और फिर दाएं बच्चे पर जाएं लेकिन यहां हमें लाइन दर लाइन करना है जो दिए गए बाइनरी ट्री के बाएं नोड

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

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

  1. पायथन में स्टैक का उपयोग करके पोस्टऑर्डर ट्रैवर्सल से BST बनाना पायथन में स्टैक का उपयोग करके पोस्टऑर्डर ट्रैवर्सल से BST बनाना

    समस्या विवरण बाइनरी सर्च ट्री का पोस्टऑर्डर ट्रैवर्सल दिया गया है, उससे BST पुनर्निर्मित करें। उदाहरण इनपुट: [6, 12, 10, 55, 45, 15] आउटपुट: इनऑर्डर ट्रैवर्सल: 6 10 12 15 45 55 एल्गोरिदम (स्टैक-आधारित) अंतिम तत्व रूट है स्टैक में रूट डालें दाएं से बाएं (n-2 से 0) ट्रैवर्स करें: नया नोड x बना