Rekursiivne kustutamine

Koostada programm, mis teostaks puustruktuuris olevate andmetega rekursiivset kustutamist.

Arvuti kõvakettal kasutatakse failide hoidmiseks katalooge. Iga kataloog võib omakorda sisaldada alamkatalooge, kus asuvad taas failid ja kataloogid. Sääraselt organiseeritud andmeid nimetatakse puustruktuuriks.
Puustruktuuri on võimalik kujutada ka tekstifailis. Sellisel juhul tähistaks tekstifaili iga rida ühte andmeobjekti. Objekti asukoht puu harus on määratud aga rea asukohaga ning kaugusega (taandega) vasakust servast. Taande abil on võimalik ühte harusse kuuluvaid objekte grupeerida:

Objekt 1
    Objekt 1.1
    Objekt 1.2
        Objekt 1.2.1
        Objekt 1.2.2
           Objekt 1.2.2.1
           Objekt 1.2.2.2
        Objekt 1.2.3
    Objekt 1.3
Objekt 2
    Objekt 2.1
    Objekt 2.2
Objekt 3

Selliste andmete kustutamisel eksisteerib üks oluline kitsendus. Kui soovime kustutada mõnda puus olevat objekti, mis omakorda sisaldab alamobjekte, tuleb enne kustutamist ka kõik alamobjektid eemaldada. Ei tohi tekkida olukorda, kus mõnel objektil puudub ülemobjekt (nn. vanem).
Failisüsteemi korral tähendab see, et kustutatav kataloog peab tühi olema; ta ei tohi sisaldada ei faile ega ka teisi katalooge, olgu need siis tühjad või mitte. Seega mingi kataloogi kustutamisel tuleb järjest (rekursiivselt) läbi käia kõik alamkataloogid ja need tühjendada. Kui alamkataloog on tühi, saab ta failisüsteemist ära kustutada. Sääraselt tsükliliselt liikudes õnnestub ära kustutada kõik antud kataloogi alamkataloogid ning nendes sisalduvad failid. Alles seejärel on võimalik ka soovitud kataloog süsteemist kaotada.