Самый хороший способ - добавить внешний ключ с роя id на поле parent_id и свойством cascade в on delete.
Ну, или в цикле, без рекурсии, у тебя есть id, получаешь всех id, у кого он parent_id, ищешь по ним тем же способом. Когда набор пустой - останавливаешь цикл.