In this problem, we should consider the path to the bottom, instead of hit-and-run. As a result, the recursive starts summation from the children up to their parents not from up to down.
For example:
The given sums up value is 8:
then these are all correct paths:
8;
8=-2=2;
2=0=6;
2=0=6=-1=1;
Here is the full code. Very well design.