the documentation say the value function at node.sum(value) must return the non-negative number
The function is passed the node’s data, and must return a non-negative number.
I don't know why limit the return number as a non-negative? I think the nagetive also make sense at some situation.