Achso, ich habe deinen Text etwas schlampig gelesen.
Delphi-Quellcode:
function VisitNode(node : TTreeNode):Boolean;
var
i : integer;
begin
// rekursiver Aufruf für alle Kinder (Tiefensuche)
for i := node.Count-1 downto 0 do // rückwärts, da durch Löschen node.Count verändert wird
begin
VisitNode(node.Item[i]);
end;
Result := (node.Data = nil) and (node.Count=0);
if Result then
node.delete;
end;