An AVL tree is a self-balancing binary search tree. In an AVL tree, the
heights of the two child subtrees of any node differ by at most one; if
at any time they differ by more than one, rebalancing is done to restore
this property. Figures 1-4 illustrate the rotation rules.
Now given a sequence of insertions, you are supposed to tell the root
of the resulting AVL tree.