import
java.util.*;
@SuppressWarnings
(
"unchecked"
)
class
GFG{
static
void
dfs(
int
node,
int
parent,
int
[]height,
int
[]vis,
ArrayList []tree)
{
height[node] =
1
+ height[parent];
vis[node] =
1
;
for
(
int
it : (ArrayList<Integer>)tree[node])
{
if
(vis[it] ==
0
)
{
dfs(it, node, height, vis, tree);
}
}
}
static
void
insertEdges(
int
x,
int
y,
ArrayList []tree)
{
tree[x].add(y);
tree[y].add(x);
}
static
void
printLevelsOddEven(
int
N,
int
[]vis,
int
[]height)
{
int
[]mark =
new
int
[N +
1
];
Arrays.fill(mark,
0
);
int
maxLevel =
0
;
for
(
int
i =
1
; i <= N; i++)
{
if
(vis[i] !=
0
)
mark[height[i]]++;
maxLevel = Math.max(height[i], maxLevel);
}
System.out.print(
"The levels with odd "
+
"number of nodes are: "
);
for
(
int
i =
1
; i <= maxLevel; i++)
{
if
(mark[i] %
2
!=
0
)
{
System.out.print(i +
" "
);
}
}
System.out.print(
"\nThe levels with even "
+
"number of nodes are: "
);
for
(
int
i =
1
; i <= maxLevel; i++)
{
if
(mark[i] %
2
==
0
)
{
System.out.print(i +
" "
);
}
}
}
public
static
void
main(String []s)
{
int
N =
9
;
ArrayList []tree =
new
ArrayList[N +
1
];
for
(
int
i =
0
; i < N +
1
; i++)
{
tree[i] =
new
ArrayList();
}
insertEdges(
1
,
2
, tree);
insertEdges(
1
,
3
, tree);
insertEdges(
2
,
4
, tree);
insertEdges(
2
,
5
, tree);
insertEdges(
5
,
7
, tree);
insertEdges(
5
,
8
, tree);
insertEdges(
3
,
6
, tree);
insertEdges(
6
,
9
, tree);
int
[]height =
new
int
[N +
1
];
int
[]vis =
new
int
[N +
1
];
Arrays.fill(vis,
0
);
height[
0
] =
0
;
dfs(
1
,
0
, height, vis, tree);
printLevelsOddEven(N, vis, height);
}
}