Prima di tutto devi crearti una funzione ricorsiva che ti generi la directory sottoforma di classe albero (occhio, ci possono essere file/cartelle con lo stesso nome ma in path completamente diversi)
dopodiché puoi copiarti tranquillamente i metodi che hai usato per l'esercizio 2 e 1, se li hai risolti con una classe albero, per le operazioni successive: calcolare l'altezza e la larghezza (vedi che c'è uno schema tra foglie/altezza e profondità dell'albero/larghezza)
per finire si deve tradurre il tutto in una matrice e fare l'immagine, vedi la logica delle immagini di esempio, c'è sempre uno schema