budget/src/main/java/budget/backend/structures/AVLSearchTree.java
private AVLTreeNode<K, V> case1(AVLTreeNode<K, V> n){
		//start from the parent. the child is left, and the grandchild is left
		//this method rewrites two and a half handshakes.
				
		n = n.getLeft();
		AVLTreeNode<K,V> subT = n.getRight();
		n.setRight(n.getParent());
		n.setParent((n.getRight()).getParent());//this handshake is not resolved here
		(n.getRight()).setParent(n);

		(n.getRight()).setLeft(subT);
		subT.setParent(n.getRight());
		//retrun the child. Do not worry about the last handshake here
		return n;
  }
/**
   * inbalance is caused by two consecutive left children (left child, left grandchild)
   * @param n the grandchild
   */
inbalance is caused by two consecutive left children (left child, left grandchild)
@param n the grandchild
inbalance is caused by two consecutive left children ( left child left grandchild ) @param n the grandchild
private AVLTreeNode<K, V> case1(AVLTreeNode<K, V> n){
		n = n.getLeft();
		AVLTreeNode<K,V> subT = n.getRight();
		n.setRight(n.getParent());
		n.setParent((n.getRight()).getParent());
		(n.getRight()).setParent(n);
		(n.getRight()).setLeft(subT);
		subT.setParent(n.getRight());
		return n;
  }
private AVLTreeNode < K , V > case1 ( AVLTreeNode < K , V > n ) { n = n . getLeft ( ) ; AVLTreeNode < K , V > subT = n . getRight ( ) ; n . setRight ( n . getParent ( ) ) ; n . setParent ( ( n . getRight ( ) ) . getParent ( ) ) ; ( n . getRight ( ) ) . setParent ( n ) ; ( n . getRight ( ) ) . setLeft ( subT ) ; subT . setParent ( n . getRight ( ) ) ; return n ; }
inbalance is caused by two consecutive left children (left child, left grandchild)
 @param n the grandchild
inbalance is caused by two consecutive left children ( left child left grandchild ) @param n the grandchild
//start from the parent. the child is left, and the grandchild is left //this method rewrites two and a half handshakes. //this handshake is not resolved here //retrun the child. Do not worry about the last handshake here