class
Solution
{
void
kPaths(Node root,
int
k, Map<Integer, Integer> p,
int
sum,
int
[] res) {
if
(root !=
null
) {
if
(sum + root.data == k)
res[
0
]++;
res[
0
] += p.getOrDefault(sum + root.data - k,
0
);
p.put(sum + root.data, p.getOrDefault(sum + root.data,
0
) +
1
);
kPaths(root.left, k, p, sum + root.data, res);
kPaths(root.right, k, p, sum + root.data, res);
p.put(sum + root.data, p.get(sum + root.data) -
1
);
}
}
public
int
sumK(Node root,
int
k)
{
int
[] res = {
0
};
Map<Integer, Integer> p =
new
HashMap<>();
kPaths(root, k, p,
0
, res);
return
res[
0
];
}
}