using
System;
using
System.Collections.Generic;
using
System.Linq;
public
class
Node {
public
int
val;
public
List<Node> children;
public
Node(
int
key)
{
val = key;
children =
new
List<Node>();
}
}
public
class
GFG {
static
Node newNode(
int
key)
{
Node temp =
new
Node(key);
return
temp;
}
static
List<List<
int
> > levelOrder(Node root)
{
List<List<
int
> > ans =
new
List<List<
int
> >();
if
(root ==
null
)
Console.WriteLine(
"N-Ary tree does not any nodes"
);
Queue<Node> main_queue =
new
Queue<Node>();
main_queue.Enqueue(root);
while
(main_queue.Any()) {
List<
int
> temp =
new
List<
int
>();
int
size = main_queue.Count;
for
(
int
i = 0; i < size; i++) {
Node node = main_queue.Dequeue();
temp.Add(node.val);
foreach
(Node child
in
node.children)
{
main_queue.Enqueue(child);
}
}
ans.Add(temp);
}
return
ans;
}
public
static
void
printList(List<List<
int
> > temp)
{
foreach
(List<
int
> it
in
temp)
{
foreach
(
int
et
in
it) Console.Write(et +
" "
);
Console.WriteLine();
}
}
static
public
void
Main()
{
Node root = newNode(1);
(root.children).Add(newNode(3));
(root.children).Add(newNode(2));
(root.children).Add(newNode(4));
(root.children[0].children).Add(newNode(5));
(root.children[0].children).Add(newNode(6));
List<List<
int
> > ans = levelOrder(root);
printList(ans);
}
}