using
System;
using
System.Collections.Generic;
class
Node
{
public
int
val;
public
Node left;
public
Node right;
public
Node(
int
val)
{
this
.val = val;
left =
null
;
right =
null
;
}
}
class
BinaryTree
{
public
Dictionary<
int
, Tuple<
double
,
double
>> mp =
new
Dictionary<
int
, Tuple<
double
,
double
>>();
public
void
avg(Node r,
int
l)
{
if
(r ==
null
)
return
;
mp[l] = Tuple.Create(mp.ContainsKey(l) ? mp[l].Item1 + r.val :
r.val, mp.ContainsKey(l) ? mp[l].Item2 + 1 : 1);
avg(r.left, l + 1);
avg(r.right, l + 1);
}
public
void
averageOfLevels(Node root)
{
avg(root, 0);
foreach
(
var
i
in
mp)
{
Console.Write((i.Value.Item1 / i.Value.Item2) +
" "
);
}
}
public
static
void
Main(
string
[] args)
{
Node root =
null
;
root =
new
Node(4);
root.left =
new
Node(2);
root.right =
new
Node(9);
root.left.left =
new
Node(3);
root.left.right =
new
Node(8);
root.right.right =
new
Node(7);
BinaryTree bt =
new
BinaryTree();
bt.averageOfLevels(root);
}
}