Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- innesto* f0(nodo *R){
- if(!R->left && !R->right){ //Se mancano entrambi i rami sinistro e destro
- return new innesto(1, 1, R, 0); //allora questo sarà un punto di innesto con l e r true
- }
- if(!R->left || !R->right){ //Se manca solo il ramo sinistro o solo quello destro
- innesto *lista; //Crea una lista
- if(R->left){ //Se manca solo il ramo destro (e quindi è presente quello sinistro)
- lista=f0(R->left); //crea una lista cercando nel ramo sinistro
- lista->next = new innesto(0, 1, R, 0); //completa la lista inserendo le info sul nodo attuale
- return lista; //ritorna la lista
- }
- if(R->right){ //Se manca solo il ramo sinistro (e quindi è presente quello destro)
- lista=f0(R->right); //crea una lista cercando nel ramo destro
- lista->next = new innesto(1, 0, R, 0); //completa la lista inserendo le info sul ramo attuale
- return lista; //ritorna la lista
- }
- }
- else{ //Se ci sono entrambi i rami sinistro e destro
- innesto *listaSx = f0(R->left); //crea la lista sinistra cercando nel ramo sinistro
- innesto *listaDx = f0(R->right); //crea la lista destra cercando nel ramo destro
- listaSx->next = listaDx; //concatena la lista sinistra con quella destra
- return listaSx; //ritorna la lista completa
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement