using
System;
using
System.Collections.Generic;
class
GFG
{
public
class
Node
{
public
int
data;
public
Node next;
public
Node child;
};
static
Node newNode(
int
data)
{
Node newNode =
new
Node();
newNode.next = newNode.child =
null
;
newNode.data = data;
return
newNode;
}
static
Node addSibling(Node n,
int
data)
{
if
(n ==
null
)
return
null
;
while
(n.next !=
null
)
n = n.next;
return
(n.next = newNode(data));
}
static
Node addChild(Node n,
int
data)
{
if
(n ==
null
)
return
null
;
if
(n.child !=
null
)
return
addSibling(n.child, data);
else
return
(n.child = newNode(data));
}
static
void
traverseTree(Node root)
{
if
(root ==
null
)
return
;
Console.Write(root.data +
" "
);
if
(root.child ==
null
)
return
;
Queue<Node> q =
new
Queue<Node>();
Node curr = root.child;
q.Enqueue(curr);
while
(q.Count != 0)
{
curr = q.Peek();
q.Dequeue();
while
(curr !=
null
)
{
Console.Write(curr.data +
" "
);
if
(curr.child !=
null
)
{
q.Enqueue(curr.child);
}
curr = curr.next;
}
}
}
public
static
void
Main(String[] args)
{
Node root = newNode(10);
Node n1 = addChild(root, 2);
Node n2 = addChild(root, 3);
Node n3 = addChild(root, 4);
Node n4 = addChild(n3, 6);
Node n5 = addChild(root, 5);
Node n6 = addChild(n5, 7);
Node n7 = addChild(n5, 8);
Node n8 = addChild(n5, 9);
traverseTree(root);
}
}