SUBROUTINE btree_delete_i8_sp2d (tree, keys, values)
TYPE(btree_i8_sp2d), INTENT(INOUT) :: tree
INTEGER(KIND=keyt), DIMENSION(:), INTENT(OUT), OPTIONAL :: keys
TYPE(btree_data_sp2d), DIMENSION(:), INTENT(OUT), OPTIONAL :: values
INTEGER :: pos
!
IF (ASSOCIATED(tree%b%root)) THEN
pos = 0
IF (PRESENT(keys) .AND. PRESENT(values)) THEN
pos = 1
CALL btree_delete_node_i8_sp2d (tree%b%root, pos, keys, values)
ELSE
CALL btree_delete_node_i8_sp2d (tree%b%root)
END IF
END IF
NULLIFY (tree%b%root)
END SUBROUTINE btree_delete_i8_sp2d