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

C++ में N-एरी ट्री लेवल ऑर्डर ट्रैवर्सल


मान लीजिए हमारे पास एक N-एरी ट्री है। हमें इसके नोड्स के मानों का लेवल ऑर्डर ट्रैवर्सल लौटाना है। N-एरी ट्री का इनपुट सीरियलाइजेशन उनके लेवल ऑर्डर ट्रैवर्सल में दर्शाया गया है, जहाँ बच्चों के प्रत्येक समूह को नल मान से अलग किया जाता है।

उदाहरण: ट्री [1,null,3,2,4,null,5,6] के लिए आउटपुट [[1],[3,2,4],[5,6]] होगा।

BFS (क्यू-आधारित)

  1. परिणाम मैट्रिक्स ans बनाएँ।
  2. यदि रूट null है, तो ans लौटाएँ।
  3. क्यू q में रूट डालें।
  4. while q खाली नहीं है:
    • sz = q.size()।
    • अस्थायी सरणी temp बनाएँ।
    • while sz--:
      • curr = q.front(), q.pop()।
      • temp.push_back(curr->val)।
      • कैर के सभी बच्चों को q में डालें।
    • ans.push_back(temp)।
  5. ans लौटाएँ।

C++ कार्यान्वयन

#include <bits/stdc++.h>
using namespace std;

class Node {
public:
    int val;
    vector<Node*> children;
    Node() {}
    Node(int _val) { val = _val; }
    Node(int _val, vector<Node*> _children) { val = _val; children = _children; }
};

class Solution {
public:
    vector<vector<int>> levelOrder(Node* root) {
        vector<vector<int>> ans;
        if (!root) return ans;
        queue<Node*> q;
        q.push(root);
        while (!q.empty()) {
            int sz = q.size();
            vector<int> temp;
            while (sz--) {
                Node* curr = q.front(); q.pop();
                temp.push_back(curr->val);
                for (Node* child : curr->children) {
                    q.push(child);
                }
            }
            ans.push_back(temp);
        }
        return ans;
    }
};

int main() {
    // ट्री बनाने का कोड
    Solution ob;
    // auto res = ob.levelOrder(root);
    return 0;
}

इनपुट

[1,null,3,2,4,null,5,6]

आउटपुट

[[1, ],[3, 2, 4, ],[5, 6, ],]
  1. C++ प्रोग्राम: लेवल ऑर्डर ट्रैवर्सल लाइन दर लाइन प्रिंट करना C++ प्रोग्राम: लेवल ऑर्डर ट्रैवर्सल लाइन दर लाइन प्रिंट करना

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

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

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

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

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