1、左左为右:左子树的左子树插入一个节点,导致二叉树不平衡,则做右旋转
tmp = root.left;
root.left = tmp.right;
tmp.right = root;
return tmp;
2、右右为左:右子树的右子树插入一个节点,导致二叉树不平衡,则做左旋转
tmp = root.right;
root.right = tmp.left;
tmp.left= root;
return tmp;
3、左右为左右:左子树的右子树插入节点导致二叉树不平衡,则先做左旋装,在做右旋转
// 左旋转以不平衡二叉树的节点为root
// 右旋转以root的parent为root
4、右左为右左:右子树的左子树插入节点导致二叉树不平衡,则先做右旋转,再左左旋转
// 右旋转以不平衡二叉树的节点为root
// 左旋转以root的parent为root