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