using
System;
using
System.Collections.Generic;
class
GFG {
class
TreeNode {
public
int
data;
public
TreeNode left, right;
public
TreeNode(
int
item)
{
data = item;
left = right =
null
;
}
}
static
TreeNode newNode(
int
item)
{
TreeNode temp =
new
TreeNode(item);
return
temp;
}
static
int
bfs_maximumNode(TreeNode root,
int
level)
{
if
(root ==
null
)
return
0;
List<TreeNode> mq =
new
List<TreeNode>();
mq.Add(root);
int
ans = 0, maxm = -10000000, k = 0;
while
(mq.Count != 0)
{
int
size = mq.Count;
while
(size != 0)
{
size--;
TreeNode temp = mq[0];
mq.RemoveAt(0);
if
(level == k && maxm < temp.data)
maxm = temp.data;
if
(temp.left !=
null
)
mq.Add(temp.left);
if
(temp.right !=
null
)
mq.Add(temp.right);
}
k++;
ans = Math.Max(maxm, ans);
}
return
ans;
}
static
void
Main() {
TreeNode root =
null
;
root = newNode(45);
root.left = newNode(46);
root.left.left = newNode(18);
root.left.left.left = newNode(16);
root.left.left.right = newNode(23);
root.left.right = newNode(17);
root.left.right.left = newNode(24);
root.left.right.right = newNode(21);
root.right = newNode(15);
root.right.left = newNode(22);
root.right.left.left = newNode(37);
root.right.left.right = newNode(41);
root.right.right = newNode(19);
root.right.right.left = newNode(49);
root.right.right.right = newNode(29);
int
level = 3;
Console.Write(bfs_maximumNode(root, level));
}
}