using
System;
using
System.Collections.Generic;
class
GFG
{
public
class
Node
{
public
int
key;
public
List<Node >child =
new
List<Node>();
};
static
Node newNode(
int
key)
{
Node temp =
new
Node();
temp.key = key;
return
temp;
}
static
void
LevelOrderTraversal(Node root)
{
if
(root ==
null
)
return
;
Queue<Node > q =
new
Queue<Node >();
q.Enqueue(root);
while
(q.Count != 0)
{
int
n = q.Count;
while
(n > 0)
{
Node p = q.Peek();
q.Dequeue();
Console.Write(p.key +
" "
);
for
(
int
i = 0; i < p.child.Count; i++)
q.Enqueue(p.child[i]);
n--;
}
Console.WriteLine();
}
}
public
static
void
Main(String[] args)
{
Node root = newNode(10);
(root.child).Add(newNode(2));
(root.child).Add(newNode(34));
(root.child).Add(newNode(56));
(root.child).Add(newNode(100));
(root.child[0].child).Add(newNode(77));
(root.child[0].child).Add(newNode(88));
(root.child[2].child).Add(newNode(1));
(root.child[3].child).Add(newNode(7));
(root.child[3].child).Add(newNode(8));
(root.child[3].child).Add(newNode(9));
Console.WriteLine(
"Level order traversal "
+
"Before Mirroring "
);
LevelOrderTraversal(root);
}
}