<p>You are given a binary tree in which each node contains an integer value (which might be positive or negative). Design an algorithm to count the number of paths that sum to a given value. The path does not need to start or end at the root or a leaf, but it must go downwards (traveling only from parent nodes to child nodes).</p>
<p><strong>Example:</strong><br/>
Given the following tree and <code>sum = 22,</code></p>
<pre>
5
/ \
4 8
/ / \
11 13 4
/ \ / \
7 2 5 1
</pre>
<p>Output:</p>
<pre>
3
<strong>Explanation: </strong>Paths that have sum 22 are: [5,4,11,2], [5,8,4,5], [4,11,7]</pre>