using
System;
using
System.Collections.Generic;
class
GFG
{
public
class
Node
{
public
int
data;
public
Node left;
public
Node right;
public
Node(
int
data)
{
this
.data = data;
left =
null
;
right =
null
;
}
}
public
static
void
levelOrder(Node root)
{
LinkedList<Node> q1 =
new
LinkedList<Node>();
LinkedList<Node> q2 =
new
LinkedList<Node>();
if
(root ==
null
)
{
return
;
}
q1.AddLast(root);
while
(q1.Count > 0 || q2.Count > 0)
{
while
(q1.Count > 0)
{
if
(q1.First.Value.left !=
null
)
{
q2.AddLast(q1.First.Value.left);
}
if
(q1.First.Value.right !=
null
)
{
q2.AddLast(q1.First.Value.right);
}
Console.Write(q1.First.Value.data +
" "
);
q1.RemoveFirst();
}
Console.WriteLine();
while
(q2.Count > 0)
{
if
(q2.First.Value.left !=
null
)
{
q1.AddLast(q2.First.Value.left);
}
if
(q2.First.Value.right !=
null
)
{
q1.AddLast(q2.First.Value.right);
}
Console.Write(q2.First.Value.data +
" "
);
q2.RemoveFirst();
}
Console.WriteLine();
}
}
public
static
void
Main(
string
[] args)
{
Node root =
new
Node(1);
root.left =
new
Node(2);
root.right =
new
Node(3);
root.left.left =
new
Node(4);
root.left.right =
new
Node(5);
root.right.right =
new
Node(6);
levelOrder(root);
}
}