12 novembre 2007

Altro esercizio

Dichiarare e definire una classe C++ per la gestione di alberi binari, come descritto nel seguente Tipo di dato astratto. La classe deve evitare correttamente il fenomeno dell'interferenza.


TDA Albero
DOMINI: albero, intero, booleano
FUNZIONI:
creavuoto: ()-> albero // crea un albero vuoto
crea: (albero x intero x albero)->albero
// crea un nuovo albero dati due sottoalberi e il valore per la radice
sottoalberosin: (albero)->albero // restituisce il sottoalbero sinistro
sottoalberodes: (albero)->albero // restituisce il sottoalbero destro
radice: (albero)->intero // restituisce il valore della radice
IsEmpty: (albero)->booleano // restituisce true se l'albero è vuoto


Scrivere un main() che costruisce un albero leggendo 7 valori da tastiera e poi costruisce un nuovo albero speculare al primo. Infine stampa i due alberi in notazione parentetica, utilizzando una funzione apposita.

Es:
7
3 6
1 2 4 5

7
6 3
5 4 2 1


Stampa:
(7 (6 (5) (4)) (3 (2) (1)))

Chi risolve questo esercizio posti la sua soluzione come commento a questo post, così posso rispondere per fornire un aiuto, fare considerazioni, segnalare errori.

5 commenti:

Anonimo ha detto...

Io non ho capito come vengono inseriti i valori dal main.. l'albero si costruisce man mano che inseriamo i valori? se si deve usare la funzione che "crea un nuovo albero dati due sottoalberi e il valore della radice" non riesco a disporre i valori in quel modo..
grazie

Emanuele Panizzi ha detto...

L'inserimento da tastiera non è la cosa importante. Le propongo di creare il primo albero con apposite istruzioni nel main() (cioè creando oggetti...)

Anonimo ha detto...

.

Anonimo ha detto...

Salve prof.

Volevo sapere come lavora il metodo creaalbero().
Questo riceve tre parametri in input (uno dei quali è l'implicito oggetto di invocazione). Ma come elabora tali argomenti?
Mi spiego meglio... l'albero che viene ritornato dal metodo è:
1 - un nuovo albero
2 - l'oggeto di invocazione divenuto padre delle radici di se stesso e dell'altro albero con l'int come nuovo valore (quello che mi pare + plausibile in quanto non vi è nell'interfaccia della classe un metodo per dare un valore alla radice).
3 - altri funzionamenti?

Grazie mille.

Anonimo ha detto...

Hhehehehhe
Più che un corso pare un amico che insegna le basi
Bellissimo blog complimenti
By 1mPHUNit0