I am creating menu and submenus in a table variable. ( Typical parent child records in the same table)
ParentID coll is null for all Top menus. And for their child ParentID
A single statement like this should do it (as an alternative to using exists):
delete p
from
tblMenu p
left join tblMenu c on p.ID = c.ParentID
where
p.ParentID is null --Ensures that the item to delete is at the top
and c.ParentID is null --Finds top level items with no children