Innåll F9: Trä Nils Börlin 5DV149 Dtstrukturr o loritmr Mollr ör/tillämpninr v trä. Ornistion o trminoloi. Sinturirm ör ornt trä. Olik typr v trä. Träloritmr. Implmnttion v trä. Mollr o tillämpninr Trä Trminoloi Moll Orrvärn i tt rmnt llr ört (ornt trä). Stmtvl/släktträ (inärt trä). Tillämpninsxmpl inom tvärln: Filsystm. Klssirrkir i Jv/OOP. Bsluts-/sök-/splträ inom AI. Prolos xkvrin. Prolmlösnin Konrnsrs Pss Bok Artikl Vrj trä r n rot (root). Ett trä står v nor (nos). Om t inns lr nor så inns t okså rnr (rns). Nor länst ut på rnrn klls löv (ls). Bsök polisn Bok rs Bok otll Bstäm tm Gör tstkörninr Skriv rtikl
Trä Ornistion Trä Ornistion (2) Elmntn i tt trä klls ör nor. En no r n position o v. tt vär. Värt på n no klls tiktt (ll). Ett träs nor inns på olik nivår (lvls). Ett trä är ornisrt som n örälr-rn-irrki. Ett rn lir på nivån unr ss örälr. All nor på n nivå m smm örälr klls syskon (silin). Ett lträ = n no o ss vkomm. nivå 1 nivå 2 nivå 3 nivå 4 Höjn (x) ör no x är ntlt år på n länst rnn i t trä är x är rot. Höjn v tt trä T (T ) = (rotn) () = 0, () = 2, () = 3 = (T ). Djupt (x) os n no x är ntlt år rån x upp till rotn: () = 3, () = 1, () = 0, nivå(x) = (x) + 1. nivå 1 nivå 2 nivå 3 nivå 4 Trä Glol nskpr Spiiktion v trä Nvirinsorintr vs. lträsorintr Ett trä r tt änlit ntl nor Ett trä är n omon ttyp. Ett trä sknr yklr, vs. vän mlln två nor är llti unik. Ett trä är n rkursiv ttyp; vrj lträ är i si tt trä. Om mn rtr m nstk trä som öränrs lånsmt, löv ör löv, så är nvirinsorintr ättr. Nturlit m oprtionr som Insrt-no, Dlt-no. Hållr mn på m trä o lträ som mn vill l upp llr slå smmn är lträsorintr ättr. Nturlit m oprtionr som Join, Split. Vi kommr tt okusr på n nvirinsorintr spiiktionn.
Sinturirm ör ornt trä Olik typr v trä St-ll vl Inspt-ll Crt Otr(vl) Root pos Hs-ll Insrt-irst-il Insrt-nxt-silin Dlt-no Bool First-il Nxt-silin Prnt Ornt trä (x. miljträ) Syskonn är linjärt orn. Syskonn kn rprsntrs v n list. Oornt trä (x. ilsystmt på n tor). Orninn ln syskonn r inn tyls. Syskonn kn rprsntrs v n män. Urträ Mr strkt än två örr. Hr n n ttyp som ntrr syskonn. Olik typr v trä Forts. Om ornin Rikt trä Kn r å i n riktnin i trät. I tt nåtriktt trä skns Prnt. I tt uppåtriktt trä skns Cilrn. Ett uppåtriktt trä måst n unktion ör tt nå nåot nnt än rotn, t.x. n oprtion som rturnrr ll löv. Binär trä (t.x. stmtvl) Vrj no r öst två rn. Orn Använs ör tt skriv olik sätt tt orn lmnt ör/tr vrnr i tt ojkt i n ttyp. Rikt När t inns n symmtri när t ällr oprtionr ör tt itt rån tt lmnt till tt nnt. Sortr När lmntvärn är orn nlit nåon orninsrltion inir ör lmntns värn (x. älr än ).
Binär trä En no i tt inärt trä kn öst två rn. Brnn klls vänstr- o örrn. Orninn mlln rnn är oinir, ävn om trän otst prsntrs m vänstrrnt ör (till vänstr) om örrnt. Två olik inär trä kn vr smm orn trä m mx två rn. Binär trä Mximl o miniml öj Mximl öj (n 1) ör n = 3, n no pr nivå: Miniml öj: t år j tt lytt når nor o å n minr öj: miniml öj j miniml öj Binär trä Höj o ntl nor För inär trä T m n nor o öj ällr: n 1 (mximl öjn), lo2 (n + 1) 1 Antlt nor på jup i är 2 i, vs. 1, 2, 4, 8,... Antlt nor totlt i trät n 2 +1 1. Ett trä r miniml öj om n > 2 1, vilkt r lo 2 (n + 1) 1 < lo 2 (n + 1), är lltså v O(lo 2 (n)). Binär trä Blnsr trä Mn vill så run trä som möjlit. Om vänstr o ör lträ r unär lik mån nor r trät lns. I tt lnsrt trä är vän till n slumpvis vl no O(lo2 n). Kompltt inärt trä (rätt r lns) Fyllr på trät rån vänstr till ör, n nivå i tt. Fullt inärt trä (ot åli lns) Vrj no är ntinn tt löv llr r två rn. kompltt ullt
Träloritmr Trvrsrin v trä Bsloritmr: Bräkn jup. Bräkn öj. Slå iop två trä. Dl upp tt trä. Trvrsr (örlytt si i) trät. Bräkn/vlur tiktt(-r) i trät. Tillämpninr v trä involvrr ot tt mn sökr tr tt lmnt m viss nskpr, iltrrr ut lmnt m viss nskpr, llr trnsormrr strukturn till n nnn struktur Exmplvis sortrin o lnsrin. All ss yr på tt mn trvrsrr strukturn. Dt inns två runlän trvrsrinsmtor: rn-örst o jupt-örst. Trvrsrin v trä Brn-örst Trvrsrin v trä Brn-örst Trät unrsöks n nivå i tt. Först rotn, sn rotns rn, ss rnrn, t. En kö är ot jälp i implmnttionn. Vrj no i trät söks nst n ån, vs. O(n). nivå 1 nivå 2 nivå 3 Aloritm Orr(Tr T) input: A tr T to trvrs or lvl L o T o or no n o L o omput(n) nivå 4 i j Ornin:,,,,,,,, i, j.
Trvrsrin v trä Djupt-örst Trvrsrin v trä Djupt-örst, prorr Mn öljr vrj rn i trät utirån rotn till lövt. En stk är ot till jälp vi implmnttionn. Vrj no i trät söks nst n ån, vs. O(n). Tr vrintr på trvrsrin: Prorr (ll, il 1, il 2,...,il ni ). Postorr (il 1, il 2,...,il ni,ll). Inorr (il 1, ll, il 2,...,il ni ). Aloritm prorr(tr T) input: A tr T to trvrs omput(root(t))// Do somtin wit // t root no. or il w o root(t) o prorr(w) prorr(bintr T) omput(root(t)) prorr(ltcil(w)) prorr(ritcil(w)) i j Ornin:,,,,,,,, i, j. Prorr läs tt okumnt Trvrsrin v trä Djupt-örst, postorr Ppr Aloritm postorr(tr T) input: A tr T to trvrs or il w o root(t) o postorr(w) omput(root(t))// Do somtin wit // t root no. postorr(bintr T) postorr(ltcil(w)) postorr(ritcil(w)) omput(root(t)) Titl Astrt 1 2 3 Rrns 1.1 1.2 2.1 2.2 2.3 3.1 3.2 i j Ornin:,,,,,, i, j,,.
Postorr Bräkn ritmtisk uttryk utn prntsr Aloritm vlutexprssion(tr T) I isl(t) rturn tvlu(t) ls x vlutexprssion(ltcil(t)) y vlutexprssion(ritcil(t)) op tvlu(t) rturn x op y Trvrsrin v trä Djupt-örst, inorr Aloritm inorr(tr T) input: A tr T to trvrs inorr(irstcil(t)) omput(root(t))// Do somtin wit // t root no. or il w (- irst) o root(t) o inorr(w) inorr(bintr T) inorr(ltcil(w)) omput(root(t)) inorr(ritcil(w)) / + + 3 2 1 3 9 5 Orr: 1, 3, +, 3, *, 9, 5, -, 2, +, /. i j Ornin:,,,,,,,, i, j. Inorr Skriv ut ritmtisk uttryk Aloritm printexprssion(tr T) print "(" I sltcil(t) printexprssion(ltcil(t)) print tvlu(t) I sritcil(t) printexprssion(ritcil(t)) print ")" + 1 3 3 / + 9 5 Utskrit: ((1+3)*3)/((9-5)+2) 2 Trä inär trä Nåtrikt inär trä r li länkr. Utnyttj ss ör tt trä nvär i trät. Dt är vnlit tt skp inorr-trä trä. Dtt ör tt mn kn trvrsr m jälp v itrtion iställt ör rkursion. Sprr minn.
Trä Tillämpninr Tillämpninr Konstruktionr v nr typr (spillt inär trä). Sökträ: Vrj no symolisrr tt ivt tillstån. Brnn symolisrr olik tillstån mn kn mn i utirån örälrns tillstån. Plnträ o OCH/ELLER-trä Norn symolisrr ur mn rytr n tt stort prolm i minr lr o v. i vilkn ornin mn ör lös lprolm. Pss Bok Konrnsrs Artikl Dt ällr tt itt målnon, vs tt tillstån som lösr prolmt. Int rimlit tt y upp ll nor (möjli) tillstån. Ot nväns uristik. Bsök polisn Bok rs Bok otll Bstäm tm Gör tstkörninr Skriv rtikl Ot nvänr mn OCH/ELLER-trä är mn kn OCH- kntr llr ELLER-kntr mlln örälr o rn: OCH ll rn övs ör lösninn. ELLER nåot rn övs ör lösninn. Implmnttionr v trä Ornt trä som k-länk struktur: Non i trät står v k-llr m tiktt, länk till örälrn o k 1 länkr till rnn. + Antlt nor i trät ynmiskt. - Mximl ntlt rn k 1 stämt i örvä. - Om t är stor vrition i ntlt rn så inns outnyttj länkr. Exmpl ör k = 4, 4-ll (tiktt, örälr, örst rn, nr rn, trj rn). Implmnttionr v trä Nåtriktt ornt trä som 1-länk struktur m list v rn: Non år n tiktt o länk till list v rn. + Antlt nor i trät ynmiskt. + Antlt rn ynmiskt.
Implmnttionr v trä Utök till 2-llr så lir trät oriktt: Non år n tiktt, länk till örälrn, smt länk till list v rn. Implmnttionr v trä Oriktt trä m jälp v 4-ll (tiktt, örälr, örst rn, örån syskon, tröljn syskon). Implmnttionr v trä Implmnttionr v trä Uppåtriktt trä m jälp v 1-ll (tiktt, örälr). Oornt uppåtriktt trä som ält: Vrj lmnt i n vktor står v tt pr: nons tiktt o n rrns till örälrn. + Tr litn plts. - Int r stö ör trvrsrin (t. x. svårt vör vilk nor som är löv). - Mximl storlkn på trät måst stämms i örvä. 1 2 3 4 5 6 7 8 9 Etiktt Förälr 4 8-1 0 2-1 8 4 8
Implmnttionr v inär trä Implmnttionr v trä Nåtriktt inärt trä m jälp v 2-ll (tiktt, vänstrrn, örrn). Oriktt inärt trä m jälp v 3-ll (tiktt, örälr, vänstrrn, örrn). Implmnttionr v trä Binärt trä som ält Rotn r inx 1 o non m inx i r sitt vänstrrn i non m inx 2i, sitt örrn i non m inx 2i + 1, sin örälr i non m inx i. 2 + Tr int utrymm ör strukturinormtion. - Trät r tt mxjup (sttiskt ält). - Krävs mrkörr ör null o tom no. - Ev. slösri m utrymm. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Etiktt -- - - -- - - -