NodeWithMaxSubTreeWeight.java

/**
 * Given a binary tree which can contain negative values, return a node with maximum
 * sub tree weight. Sub tree weight includes the current node.
 * e.g.        4
 *            / \
 *           1   0
 *          / \   \
 *        -1  -2   -3
 *        /    \    \
 *       4     5     9
 *      / \   / \   / \
 *     3  2  -6 7  -10 -11
 */