if current nodes is a half node with right child NULL right , then it 's right child is  returned and replaces it in the given tree
if ( root -> right == NULL ) { struct node * new_root = root -> left ; free ( root ) ; return new_root ; } return root ; }