using
System;
public
class
Node
{
public
int
data;
public
Node left, right;
public
Node(
int
d)
{
data = d;
left = right =
null
;
}
}
public
class
Program
{
public
static
void
dfs(Node root,
ref
int
ans,
ref
int
sum,
ref
int
count,
int
K)
{
if
(root ==
null
)
return
;
int
left_sum = 0, left_count = 0;
dfs(root.left,
ref
ans,
ref
left_sum,
ref
left_count, K);
int
right_sum = 0, right_count = 0;
dfs(root.right,
ref
ans,
ref
right_sum,
ref
right_count, K);
sum = left_sum + right_sum + root.data;
count = left_count + right_count + 1;
if
(left_count != 0 && left_sum / left_count >= K)
{
ans++;
}
}
public
static
void
countNodes(Node root,
int
K)
{
int
ans = 0, sum = 0, count = 0;
dfs(root,
ref
ans,
ref
sum,
ref
count, K);
Console.WriteLine(ans);
}
public
static
void
Main()
{
Node root =
new
Node(2);
root.left =
new
Node(5);
root.right =
new
Node(4);
root.left.left =
new
Node(5);
root.left.right =
new
Node(6);
root.right.left =
new
Node(6);
root.right.right =
new
Node(2);
root.left.left.right =
new
Node(5);
root.right.left.left =
new
Node(4);
int
K = 5;
countNodes(root, K);
}
}