using
System;
using
System.Collections.Generic;
public
class
node {
public
int
data;
public
node left;
public
node right;
}
public
class
GFG {
static
Dictionary<
int
, List<
int
> > m
=
new
Dictionary<
int
, List<
int
> >();
static
int
maxlevel = 0;
static
node newnode(
int
d)
{
node temp =
new
node();
temp.left =
null
;
temp.right =
null
;
temp.data = d;
return
temp;
}
static
void
findNode(node root,
int
level)
{
if
(root !=
null
)
{
findNode(root.left, level + 1);
if
(!m.ContainsKey(level)) {
m.Add(level,
new
List<
int
>());
}
m[level].Add(root.data);
maxlevel = Math.Max(maxlevel, level);
findNode(root.right, level + 1);
}
}
static
void
printNode(node root,
int
level)
{
findNode(root, level);
for
(
int
i = 0; i <= maxlevel; i++) {
Console.Write(
"Level "
+ (i + 1) +
": "
);
List<
int
> it = m[i];
int
flag = 0;
if
(it.Count < i) {
flag = 1;
Console.WriteLine(
"-1"
);
}
else
{
Console.WriteLine(it[i]);
}
}
}
static
public
void
Main()
{
node root = newnode(1);
root.left = newnode(2);
root.right = newnode(3);
root.left.left = newnode(4);
root.left.right = newnode(5);
root.left.right.left = newnode(11);
root.left.right.right = newnode(12);
root.left.left.left = newnode(9);
root.left.left.right = newnode(10);
root.right.left = newnode(6);
root.right.right = newnode(7);
root.right.right.left = newnode(13);
root.right.right.right = newnode(14);
printNode(root, 0);
}
}