public BinarySearchTreeNode remove(BinarySearchTreeNode root2, int element) {
   // System.out.println("################");
   if (root2 == null) {
     return null;
   } else if (element < root2.getData()) {
     root2.setLeft(remove(root2.getLeft(), element));
   } else if (element > root2.getData()) {
     root2.setRight(remove(root2.getRight(), element));
   } else {
     // System.out.println("same value");
     BinarySearchTreeNode temp;
     if (root2.getLeft() == null && root2.getRight() == null) {
       root2 = null;
     } else if (root2.getLeft() != null && root2.getRight() != null) {
       temp = getMax(root2.getLeft());
       root2.setData(temp.getData());
       root2.setLeft(remove(root2.getLeft(), root2.getData()));
     } else {
       temp = root2;
       if (root2.getLeft() == null) {
         root2 = root2.getRight();
       }
       if (root2.getRight() == null) {
         temp = getMax(root2.getLeft());
         if (temp != null) {
           root2.setData(temp.getData());
           root2.setLeft(remove(root2.getLeft(), root2.getData()));
         }
       }
     }
   }
   // System.out.println("---------------------");
   if ((FindHeight(root2.getLeft()) - FindHeight(root2.getRight())) == 2) {
     if (element < root2.getLeft().getData()) {
       System.out.println("SingleRotateLeft");
       root2 = singleRotationLeft(root2);
     } else {
       System.out.println("LeftRightRotation");
       root2 = leftRightRotation(root2);
     }
   }
   if ((FindHeight(root2.getRight()) - FindHeight(root2.getLeft())) == 2) {
     // System.out.println("++++++++++++++++++++++");
     BinarySearchTreeNode parent = null;
     BinarySearchTreeNode temp2 = root2;
     while (temp2.getRight() != null) {
       parent = root2;
       temp2 = temp2.getRight();
     }
     if (temp2.getLeft() == null && temp2.getRight() == null && temp2.getLeft() == null) {
       singleRotationRight(root2);
     } else {
       rightLeftRotation(root2);
     }
   }
   root2.height = max(FindHeight(root2.getLeft()), FindHeight(root2.getRight()));
   return root2;
 }