Intro oducción a la Program mación II Arboles ¾ Necessidad de una estrructura con mayo or velociidad de acceso. a ¾Estrucctura de árbol. á ¾Recorrridos y accesos. a ¾Alta de d un nod do en el árbol. á ¾Baja de d un nod do en el árbol. ¾Modifficación de d datos de un no odo del árbol. á ¾Árbolees balancceados. Intro oducción a la Program mación II Co osto dee acceeso a datoss Memoria Arrreglo (20) 7 13 18 25 34 37 39 4 41 47 49 51 53 55 56 Lista aSimple 9En el e arreglo, accceso por biisección. (Cossto máximo o= l2N) (con n 1.000 elem mentos = 10) 9En laa lista, accesso secuencial. (Cossto promedio o = N/2) (con 1.000 elem mentos = 500 0) 62 67 7 80 95 … 25 13 60 34 18 7 58 Intro oducción a la Program mación II Árbo ol xx Intro oducción a la Program mación II Árb bol biinario o Memo oria A Arbol 22 35 14 18 29 19 46 44 58 Intro oducción a la Program mación II Memoria Alguna A as Deffinicio ones Arb bol 22 2 35 14 18 29 46 9Gra ado es el número o máximo de hijo os que tienen los nodos del árbol. Así, en el ejemp plo anterior el árboll es de grado dos (binario). Por lo o tanto una lista no n es más que un n árbol de grado uno. u 9Nodo Padre de un nodo n X es aquel que apunta al miismo. Cada nodo o sólo puede teneer un padre. 9Nodo Hijo de otro nodo n Z es cualqu uier nodo apuntad do por el nodo Z. 9Nodo Raíz es el úniico del árbol que no tiene padre. 9Hoj ojas son todos loss nodos que no tienen hijos. 9Nodos Interiores so on los nodos que no son ni el nod do raíz, ni nodos hoja. mino es una secu uencia de nodos, en el que dos no odos consecutivo os cualesquiera so on padre e hijo. 9Cam 9Ram ma es un camino o desde el nodo raíz r a una hoja. 9Nivvel de un nodo, es el número de nodos n del camino o desde la raíz haasta dicho nodo. Nivel N de raíz=1. 9 Alttura es el máxim mo número de nodos de las ramass del árbol. 9Bossque es un conju unto de árboles. Intro oducción a la Program mación II Defin D ición de árrbol Memoria Arbol 22 35 14 18 29 19 46 4 44 Ty ype PuntArboll = ^TipoNodo oArbol; TipoNodoA Arbol = recorrd Nro : Integer; ores, Mayores:: PuntArbol Meno End; Va ar ElArbol : Pu untArbol; 58 Intro oducción a la Program mación II Recor R rrido en árb bol Memoria Arbol 22 35 14 18 29 19 46 4 44 Prrocedure MosstrarDatos(Poss: PuntArbol); Beegin t begin if Pos <> nil then MostrarDa atos(Pos ^.Meenores); writeln(Pos ^.Nro); atos(Pos ^.Ma ayores); MostrarDa end; En nd; 58 En ordeen E A Ascende ente Intro oducción a la Program mación II Recor R rrido en árb bol Memoria Arbol 22 35 14 18 29 19 46 4 44 Prrocedure MosstrarDatos(Poss: PuntArbol); Beegin t begin if Pos <> nil then MostrarDa atos(Pos ^.Ma ayores); writeln(Pos ^.Nro); atos(Pos ^.Meenores); MostrarDa end; En nd; 58 En ordeen E D Descend dente Intro oducción a la Program mación II Modo os de recorrrido en e árb bol Memoria Arbol 22 35 14 18 29 19 46 44 58 Prrocedure MosstrarDatos(Poss: PuntArbol); Beegin t begin if Pos <> nil then MostrarDa atos(Pos ^.Meenores); writeln(Pos ^.Nro); atos(Pos ^.Ma ayores); MostrarDa end; En nd; In n Ordeer Intro oducción a la Program mación II Modo os de recorrrido en e árb bol Memoria Arbol 22 35 14 18 29 19 46 44 58 Prrocedure MostrarDatos(Poss: PuntArbol); Beegin t begin if Pos <> nil then writeln(Po os ^.Nro); MostrarDa atos(Pos ^.Meenores); MostrarDa atos(Pos ^.Ma ayores); end; En nd; P Ord Pre der Intro oducción a la Program mación II Modo os de recorrrido en e árb bol Memoria Arbol 22 35 14 18 29 19 46 44 58 Prrocedure MosstrarDatos(Poss: PuntArbol); Beegin t begin if Pos <> nil then MostrarDa atos(Pos ^.Meenores); MostrarDa atos(Pos ^.Ma ayores); writeln(Pos ^.Nro); end; En nd; P Orrder Post Intro oducción a la Program mación II B ueda en árb Búsqu bol Memoria Arbol 22 35 14 18 29 19 46 4 44 58 Fu unction Punteero(Pos: PuntA Arbol, Valor: Integer):PunttArbol; Beegin hen if Pos = nil th Puntero := nil Nro = Valor then else if Pos^.N Puntero := Pos Nro < Valor then else if Pos^.N Puntero := Puntero (Pos^.Mayores,Va alor); else alor); Puntero := Puntero (Pos^.Menores,Va En nd; Intro oducción a la Program mación II Memoria Altta en árboll Arbol 22 35 14 18 29 19 46 4 44 Prrocedure Alta((var Pos: Pun ntArbol, Valor: Integer); Beegin hen begin if Pos = nil th new(Pos); = Valor; Pos^.Nro := Pos^.Meno ores := nil; Poss^.Mayores := = nil; end else if Po os^.Nro < Valo or then Alta (Pos^.M Mayores,Valo or); else or); Alta (Pos^..Menores,Valo En nd; 58 Intro oducción a la Program mación II Arbol Baj aja en árboll 22 35 14 18 29 19 46 44 5 58 9B Borrar un n nodo sin n hijos ó nodo n hoja a: simplem mente se borrra y se establece a nulo n el ap puntador de d su padree. 9B Borrar un n nodo con n un subá árbol hijo o: se borraa el nodo y see asigna su subárbo ol hijo com mo subárbo ol de su padre. p 9B Borrar un n nodo co on dos su ubárboless hijo: es el caso com mplejo quee veremoss a continu uación. Intro oducción a la Program mación II Baj aja en árboll Baj aja en árboll Intro oducción a la Program mación II M ficació Modifi ón de datoss de árrbol 9Dato no o Clave: No N hay nad da a modificar. 9Dato Cllave: Si modifica m su u posición n se puede dar de baja y altaa en la nueeva posiciión. Intro oducción a la Program mación II Idea sobre s balan nceo de d árb bol Peo or situació ón: Mejo or situación n: