public void sinkZero(Node root) {
        if (root == null) {
            return;
        }

        sinkZero(root.left);
        sinkZero(root.right);

        if (root.data < 0) {
            pushDown(root);
        }
    }
http://www.careercup.com/question?id=5344154741637120
src/com/interview/tree/SinkNegativeToBottom.java