Árboles binarios. Árbol: definición. Árbol (del latín arbor oris):

Tamaño: px
Comenzar la demostración a partir de la página:

Download "Árboles binarios. Árbol: definición. Árbol (del latín arbor oris):"

Transcripción

1 Árol: iniión Árols inrios Árol (l ltín ror oris): Plnt prnn, trono lñoso y lvo, qu s rmii irt ltur l sulo. (otrs, vr Rl Ami Espñol ) Frno Guii Polno Esul Innirí Inustril Pontiii Univrsi Ctóli Vlpríso, Cil uii@uv.l Atulizión: 13 myo 2005 Frno Guii Polno 2 Árol: iniión (ont.) Árol: Gro onxo, no orinto y ílio. C A E B D H Árol: iniión (ont.) Árol: Un strutur tos s s un noo ríz. C noo s y s un oj o un noo intrno. Un noo intrno tin uno o más noos ijos, y s l llm pr sus noos ijos. Un árol s, y s: un onjunto vío, o un ríz on ro o más árols Frno Guii Polno 3 Frno Guii Polno 4

2 Hojs y noos intrnos Rprsntión un árol Un oj s ulquir noo qu tin sus ijos víos. Un noo intrno s ulquir noo on l mnos un ijo no vío. Noos intrnos suárol i j ríz suárol k Hojs suárol l m suárol Frno Guii Polno 5 Frno Guii Polno 6 Rprsntión un árol (ont.) Noos prs ijos Ls rís los suárols un árol son ijos l ríz l árol. Exist un ro s noo uno sus ijos, y s i qu st noo s pr sus ijos. i j k suárols noo suárols noo l m suárol noo Frno Guii Polno Frno Guii Polno 8

3 Rut y lro un rut Anstros y snints Si n 1, n 2,... n k s un suni noos n un árol, moo qu n i s pr n i + 1, pr 1<=i<=k, ntons st suni s llm rut s n 1 n k. El lro st rut s k. n 1 n 2 n 3 Si xist un rut s un noo A un noo B, ntons A s nstro B y B s snint A. Luo, toos los noos un árol son snints l ríz l árol, mintrs qu l ríz s l nstro toos los noos. Frno Guii Polno 9 Frno Guii Polno Altur L ltur un noo M un árol orrspon l númro noos n l rut s l ríz st M. L ltur un árol orrspon l ltur l noo más prouno. Altur l árol=4 Altur l noo=2 Frno Guii Polno 11 Nivls Toos los noos ltur stán n l nivl n l árol. L ríz stá n l nivl 1, y su ltur s 1. Nivl 1 Nivl 2 Nivl 3 Nivl 4 Frno Guii Polno

4 Árols inrios Rprsntión un árol inrio (I) Un A.B. stá onstituio por un onjunto inito lmntos llmos noos. ríz Un árol inrio: no tin noos (stá vío); o tin un noo llmo ríz, junto on otros os árols inrios llmos suárols ro izquiro l ríz. suárol izquiro suárol ro Not: Un prt importnt l mtril prsnto n st sión u loro por Mrlo Silv F. Frno Guii Polno 13 Frno Guii Polno Rprsntión un árol inrio (II) Iul árols inrios ríz suárol ro Pr sr iuls, os árols n tnr tnto l mism strutur, omo l mismo ontnio. suárol izquiro Frno Guii Polno 15 Frno Guii Polno 16

5 Árols inrios llnos Un árol inrio llno s qul n qu noo s un noo intrno on os ijos no víos, o un oj. Árols inrios ompltos Un árol inrio omplto tin un orm rstrini, qu s otin l sr llno izquir r. En un A.B. Complto ltur, toos los nivls, xpto posilmnt l nivl stán ompltmnt llnos. No s A.B. llno Es A.B. llno Es un A.B. omplto pro no s un A.B. llno Frno Guii Polno 1 Frno Guii Polno Númro noos n un árol inrio El máximo númro noos n l nivl i un árol inrio s 2 (i-1). El máximo númro noos n un árol inrio ltur K s 2 (K) -1. Rprsntión árols inrios mint noos y rrnis Frno Guii Polno 19 Frno Guii Polno 20

6 Dirm lss un árol inrio Dirm lss árol inrio ntros: Dirm ojtos un árol inrio :ABB ABB insrt(i:int) in(:dt):ooln lt(i:int) 1..1 root lt t:int ABBNo stdt(i:int) tdt():int stlt(n:abbno) tlt():abbno strit(n:abbno) trit():abbno isl():ooln rit :ABBNo t: root:abbno t:20 :ABBNo t:32 :ABBNo t:2 :ABBNo t:15 :ABBNo t:40 Frno Guii Polno 21 Frno Guii Polno 22 Rprsntión árols inrios mint rrlos Si l ríz un suárol s lmn n A[i], su ijo izquiro s lmn n A[2*i], y su ijo ro n A[2*i+1]. Rorrio árols inrios Un rorrio s ulquir proso stino visitr los noos un árol inrio n un trmino orn. Culquir rorrio qu visit noo xtmnt un vz, s nomin un numrión los noos l árol. Rorrios numrión nlizr: Prorn Inorn Postorn Frno Guii Polno 23 Frno Guii Polno 24

7 Rorrio n Prorn Cóio pr rorrio Prorn Do un árol inrio: 1) Visitr su ríz. 2) Rorrr n prorn su suárol izquiro. 3) Rorrr n prorn su suárol ro. voi prorr(binno rt) // rt s l ríz l surol { i (rt==null) rturn; // surol vío visit(rt) // lo on l noo prorr(rt.lt()); prorr(rt.rit()); } Frno Guii Polno 25 Frno Guii Polno 26 Ejmplo rorrio n Prorn Rorrio n Inorn Do un árol inrio: 1) Rorrr n inorn su suárol izquiro. 2) Visitr su ríz. 3) Rorrr n inorn su suárol ro. i j k i j k Frno Guii Polno 2 Frno Guii Polno 28

8 Cóio pr rorrio Inorn Ejmplo rorrio n Inorn voi inorr(binno rt) // rt s l ríz l surol { i (rt==null) rturn; // surol vío inorr(rt.lt()); visit(rt) // lo on l noo inorr(rt.rit()); } i j k j i k Frno Guii Polno 29 Frno Guii Polno 30 Rorrio n Postorn Cóio pr rorrio Postorn Do un árol inrio: 1) Rorrr n postorn su suárol izquiro. 2) Rorrr n postorn su suárol ro. 3) Visitr su ríz. voi postorr(binno rt) // rt s l ríz l surol { i (rt==null) rturn; // surol vío postorr(rt.lt()); postorr(rt.rit()); visit(rt) // lo on l noo } Frno Guii Polno 31 Frno Guii Polno 32

9 Ejmplo rorrio n Postorn Árol inrio úsqu j i k Suponmos qu tnmos un onjunto n lmntos qu pun sr ornos por lun lv. En un árol inrio úsqu (ABB), toos los noos lmnos n l suárol izquiro un noo uyo vlor lv s C tinn lvs mnors qu C, mintrs qu toos los noos uios n l suárol ro tinn lvs myors qu C. j k i Frno Guii Polno 33 Frno Guii Polno 34 Ejmplos árols inrios úsqu Inrso lmntos un ABB < > Diniión ABB No s ABB {, 5,, 15,,, } { 15,,, 5,,, } 15 5 Es ABB Frno Guii Polno 35 Frno Guii Polno 36

10 ABB rrni Inrso lmntos un ABB (ont.) ABB insrt(:elmnt) in(ky:int):elmnt lt(i:int):elmnt 1 root lt ABBNo stdt(:elmnt) tdt():elmnt stlt(n:abbno) tlt():abbno strit(n:abbno) trit():abbno isl():ooln rit t 1 Elmnt {intr} tky():int privt BinNo insrt (BinNo rt, Elmnt vl) { i (rt == null) rturn nw BinNo(vl); Elmnt it = (Elmnt)rt.lmnt(); i (it.ky() > vl.ky()) rt.stlt(insrt(rt.lt(), vl)); ls rt.strit(insrt(rt.rit(), vl)); rturn rt; } Frno Guii Polno 3 Frno Guii Polno 38 Crtrístis l inrso lmntos un ABB Rorrio Inorn n ABB Los lmntos ros un ABB simpr son inorporos iniilmnt omo ojs. 15 Un onjunto lmntos o pu nrr ivrsos ABB, pnino l orn n qu son inrsos Frno Guii Polno 39 Frno Guii Polno 40

11 Crtrístis l rorrio Inorn un ABB Búsqu n ABB Si in xistn muos ABBs posils pr un mismo onjunto lmntos, l rorrio Inorn toos stos árols simpr ntr l onjunto orno mnor myor. Pr llr un lmnto on lv C, n un árol A: Si l ríz l árol A lmn C, l úsqu trmin xitosmnt. Si C s mnor qu l vlor l ríz A, usr n l suárol izquiro. Si C s myor qu l vlor l ríz, usr n l suárol ro. L úsqu trmin l llr l vlor C, o l prtnr usr n un suárol vío. Frno Guii Polno 41 Frno Guii Polno 42 Búsqu n ABB (ont.) Ejmplo úsqu n ABB Elm in(binno rt, int ky) { i (rt == null) rturn null; Elmnt it = (Elmnt)rt.lmnt(); i ((int)it.ky() > ky) rturn in(rt.lt(), ky); ls i (it.ky() == ky) rturn it; ls rturn in(rt.rit(), ky); } Busr Búsqu xitos Busr 16 Búsqu inrutuos Frno Guii Polno 43 Frno Guii Polno 44

12 Eliminión lmntos un ABB Eliminr noo qu s un oj o tin lo más un ijo S pun prsntr trs sos: El lmnto no xist. El lmnto s un oj o tin lo más un ijo. El lmnto tin os ijos. 15 Frno Guii Polno 45 Frno Guii Polno 46 Ejmplo liminión noo on os ijos Eliminr noo on os ijos 16 1 El mnor los lmntos myors (Noo más l izquir l suárol ro) Hllr l noo qu ontin l mnor los lmntos myors l noo liminr (l lmnto más l izquir su suárol ro) 2. Rmplzr los tos l noo liminr on los l noo llo. 3. Eliminr l noo llo, qu tin lo más un ijo, on l proiminto srito prvimnt. Frno Guii Polno 4 Frno Guii Polno 48

13 Utili los árols inrios úsqu Al usr, l ABB prmit srtr priori un suonjunto lmntos, n orm nálo l úsqu inri n rrlos ornos. El ABB prsnt más l vntj por sr implmnto on puntros (strutur inámi). L inorporión y liminión lmntos l ABB s ms rápi qu n rrlos ornos. Importni un strutur ln n los ABB L strutur un ABB s importnt l momnto rlizr úsqus n él En l por los sos s n 3 itrions pr un úsqu. 3 5 En l por los sos s n itrions pr un úsqu. Frno Guii Polno 49 Frno Guii Polno 50