using
System;
using
System.Collections.Generic;
class
GFG
{
public
class
node
{
public
int
data;
public
node left, right;
}
static
node root1 =
null
;
static
node add(
int
data)
{
node newnode =
new
node();
newnode.data = data;
newnode.left = newnode.right =
null
;
return
newnode;
}
static
void
addinBT(
int
data)
{
if
(root1 ==
null
)
root1 = add(data);
else
{
Queue<node> Q =
new
Queue<node>();
Q.Enqueue(root1);
while
(Q.Count != 0)
{
node temp = Q.Peek();
Q.Dequeue();
if
(temp.left ==
null
)
{
temp.left = add(data);
break
;
}
else
Q.Enqueue(temp.left);
if
(temp.right ==
null
)
{
temp.right = add(data);
break
;
}
else
Q.Enqueue(temp.right);
}
}
}
static
node addinBST(node root,
int
data)
{
if
(root ==
null
)
root = add(data);
else
if
(data < root.data)
root.left = addinBST(root.left,
data);
else
root.right = addinBST(root.right,
data);
return
root;
}
static
void
addinorder(node root)
{
if
(root ==
null
)
return
;
addinorder(root.left);
addinBT(root.data);
addinorder(root.right);
}
static
void
printlvl()
{
Queue<node> Q =
new
Queue<node>();
Q.Enqueue(root1);
while
(Q.Count != 0)
{
node temp = Q.Peek();
Q.Dequeue();
Console.Write(temp.data +
" "
);
if
(temp.left !=
null
)
Q.Enqueue(temp.left);
if
(temp.right !=
null
)
Q.Enqueue(temp.right);
}
}
public
static
void
Main(String[] args)
{
node root =
null
;
root = addinBST(root, 1);
root = addinBST(root, 2);
root = addinBST(root, 3);
root = addinBST(root, 4);
root = addinBST(root, 5);
addinorder(root);
printlvl();
}
}