Laboratorio di Algoritmi e Strutture Dati Alberi n-nari Teresa M.A. Basile – [email protected] – Dipartimento di Informatica Università degli Studi di Bari “Aldo Moro” Materiale di base gentilmente concesso dal dott. Nicola Di Mauro 1 Sintesi Modulo Teoria Alberi n-ari: Specifica Sintattica e Semantica ● Rappresentazione ● mediante vettore (di padri) ● [per ogni nodo (indice) --> riferimento al padre (contenuto)] mediante liste di figli ● mediante liste collegate ● Esercizi proposti: ● Algoritmi di Visita: pre-ordine, post-ordine, simmetrica ● Realizzazione di MFSET - insiemi disgiunti - basata su alberi ● (foreste) 2 SSPPEECCIIFFIICCAA TTiippii: albero=insieme degli alberi ordinati T=<N,A> in cui ad ogni nodo n in N è associato il livello(n); boolean=insieme dei valori di verità; nodo=insieme qualsiasi (non infinito). OOppeerraattoorrii: fi CCRREEAAAALLBBEERROO: ( ) albero CCRREEAAAALLBBEERROO = T' L POST: T'= (ALBERO VUOTO) fi AALLBBEERROOVVUUOOTTOO: (albero) boolean AALLBBEERROOVVUUOOTTOO((TT)) = b L POST: b=VERO SE T= b=FALSO, ALTRIMENTI fi IINNSSRRAADDIICCEE: (nodo, albero) albero IINNSSRRAADDIICCEE((uu,, TT)) = T' L PRE: T= POST: T'=(N,A), N={u}, LIV(u)=0, A=Ø 3 fi RRAADDIICCEE: (albero) nodo RRAADDIICCEE((TT)) =u „L PRE: T (cid:222) POST: u E’ RADICE DI T LIV(u)=0 fi PPAADDRREE: (nodo, albero) nodo PPAADDRREE((uu,, TT)) =v „L ˛ PRE: T , u N, LIV(u)>0 ˛ POST: v È PADRE DI u, <v,u> A, LIV(u)=LIV (v)+1 fi FFOOGGLLIIAA: (nodo, albero) boolean FFOOGGLLIIAA((uu,, TT)) =b „L ˛ PRE: T , u N (cid:216)$ ˛ ’ ˛ POST: b=VERO SE v N ’ <u,v> A E LIV(v)=LIV(u)+1 b=FALSO, ALTRIMENTI fi PPRRIIMMOOFFIIGGLLIIOO: (nodo, albero) nodo PPRRIIMMOOFFIIGGLLIIOO((uu,, TT)) =v „L ˛ PRE: T , u N, FOGLIA(u, T)=FALSO ˛ POST: <u,v> A, LIV (v)=LIV (u)+1 v È PRIMO IN BASE ALLA RELAZIONE D’ORDINE STABILITA TRA I FIGLI DI u 4 fi UULLTTIIMMOOFFRRAATTEELLLLOO: (nodo, albero) boolean UULLTTIIMMOOFFRRAATTEELLLLOO((uu,, TT)) =b „L ˛ PRE: T , u N POST: b=VERO SE NON ESISTONO ALTRI FRATELLI DI u CHE LO SEGUONO NELLA RELAZIONE D’ORDINE b=FALSO, ALTRIMENTI fi SSUUCCCCFFRRAATTEELLLLOO: (nodo, albero) nodo SSUUCCCCFFRRAATTEELLLLOO((uu,, TT)) =v „L ˛ PRE: T , u N, ULTIMOFRATELLO(u, T)=FALSO POST: v È IL FRATELLO DI u CHE LO SEGUE NELLA RELAZIONE D’ORDINE fi IINNSSPPRRIIMMOOSSOOTTTTOOAALLBBEERROO:(nodo,albero,albero) albero IINNSSPPRRIIMMOOSSOOTTTTOOAALLBBEERROO((uu,, TT,, TT'')) =T'' „L „L ˛ PRE: T , T ' , u N POST: T'' È OTTENUTO DA T AGGIUNGENDO L’ALBERO T' LA CUI RADICE r' È IL NUOVO PRIMOFIGLIO DI u fi IINNSSSSOOTTTTOOAALLBBEERROO: (nodo, albero, albero) albero IINNSSSSOOTTTTOOAALLBBEERROO((uu,, TT,, TT'')) =T'' „L „L ˛ PRE: T , T ' , u N, u NON È RADICE DI T POST: T'' È L’ALBERO OTTENUTO DA T AGGIUNGENDO IL SOTTOALBERO T' DI RADICE r' (CIOÈ r' DIVENTA IL NUOVO FRATELLO CHE SEGUE u) 5 IINNSSEERRIIMMEENNTTII r ' r a b x y c d INSPRIMOSOTTOALBERO(a,T,T') INSSOTTOALBERO(a,T,T') r r a a ' r b b ' r c d c d x y x y 6 fi CCAANNCCSSOOTTTTOOAALLBBEERROO: (nodo, albero) albero CCAANNCCSSOOTTTTOOAALLBBEERROO((uu,, TT)) =T' „L ˛ PRE: T , u N POST: T' È OTTENUTO DA T TOGLIENDOVI IL SOTTOALBERO DI RADICE u (CIOÈ u E TUTTI I SUOI DISCENDENTI) CANCSOTTOALBERO(b,T) r r a b c a c e f g d d 7 ANCHE PER L’ALBERO N-ARIO SONO UTILI DUE OPERATORI PER ETICHETTARE I NODI E PER LEGGERE L’INFORMAZIONE ASSOCIATA SSPPEECCIIFFIICCHHEE TTiippii:: VVaa aaggggiiuunnttoo TTIIPPOOEELLEEMM ddeell ttiippoo ddeellll’’eettiicchheettttaa LLEEGGGGIINNOODDOO: (NODO,ALBERO) TIPOELEM LLEEGGGGIINNOODDOO ((nn,,TT)) == aa ˛ PRE: n E’ UN NODO DI T, n N POST: a E’ IL VALORE ASSOCIATO AL NODO n IN T fi SSCCRRIIVVIINNOODDOO: (TIPOELEM,NODO,ALBERO) ALBERO SSCCRRIIVVIINNOODDOO ((aa,,nn,,TT)) == TT'' ˛ PRE: n E’ UN NODO DI T, n N POST: T' E’ IL NUOVO ALBERO CORRISPONDENTE AL VECCHIO T CON IL NUOVO VALORE a ASSEGNATO AL NODO n 8 Rappresentazione di Alberi (n-ari) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 figlio (relazione logica, rappresentata in modo indiretto) figlio primogenito fratello padre 9 9 RREEAALLIIZZZZAAZZIIOONNEE CCOONN VVEETTTTOORREE DDII PPAADDRRII 1 1 0 2 1 2 3 2 4 2 5 4 3 3 6 4 7 4 8 4 5 6 7 8 rappresentazione con liste di figli 1 ˘ 2 2 ˘ 3 3 4 4 ˘ 5 5 … 6 7 10
Description: