मान लीजिए हमारे पास एक N-एरी ट्री है। हमें इसके नोड्स के मानों का लेवल ऑर्डर ट्रैवर्सल लौटाना है। N-एरी ट्री का इनपुट सीरियलाइजेशन उनके लेवल ऑर्डर ट्रैवर्सल में दर्शाया गया है, जहाँ बच्चों के प्रत्येक समूह को नल मान से अलग किया जाता है।
उदाहरण: ट्री [1,null,3,2,4,null,5,6] के लिए आउटपुट [[1],[3,2,4],[5,6]] होगा।
BFS (क्यू-आधारित)
- परिणाम मैट्रिक्स
ansबनाएँ। - यदि रूट null है, तो
ansलौटाएँ। - क्यू
qमें रूट डालें। while q खाली नहीं है:sz = q.size()।- अस्थायी सरणी
tempबनाएँ। while sz--:curr = q.front(),q.pop()।temp.push_back(curr->val)।- कैर के सभी बच्चों को
qमें डालें।
ans.push_back(temp)।
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, ],]