So, for referential integrity I don't recommend re-using ids. With the maximum limits on int and bigint you should never run out of unique values. Unique values are the core of referential databases.
With that said, you could run a search sub-routine (or instead of trigger) to find the lowest available id. Then momentarily turn off identity inserts, insert the data, then turn identity inserts back on.
There are so many reasons not to do this! Among which are all of the potential collisions between inserting data when more than one value are coming in at the same time.