public Node upsideDownBinaryTree(Node root) {
        if (root == null) {
            return null;
        }
        return upsideDownBinaryTree(root, null, null);
    }
Given a binary tree where all the right nodes are either leaf nodes with a sibling (a left node that
shares the same parent node) or empty, flip it upside down and turn it into a tree where the original
right nodes turned into left leaf nodes. Return the new root.

https://leetcode.com/problems/binary-tree-upside-down/
src/com/interview/tree/UpsidedownBinaryTree.java