Kap.12 Flervegssøketre Sist oppdatert 12.04.10 Studerer 2-3 og 2-4 trær
Motivasjon n maks = antall elementer i et fullt binært tre med nivåer 0 k ; (en node har ett element) n maks = 2 0 + 2 1 + + 2 k = 2 k+1-1 (geometrisk rekke) Høyden h = log 2 n maks maksimalet nivåtallet. ; høyden er det La n maks = 16777215 i et fullt BS-tre. Det gir h = 23, altså kreves maks 24 sml av elementer på ulike nivå for å finne et bestemt element. 16-2
Motivasjon La oss lage et søketre der hver node har 255 elementer og 256 barn (Tre av orden 256). Vi kan utlede tilsvarende formel og finner at h = log 256 n maks, n maks = maks antall elementer Innsatt for n maks = 16777215 (255 + 255*256 + 255*256 2 = 16777215) får vi h = 2, altså kreves maks kun 3 besøk av noder for å finne et bestemt element (Husk: innenfor riktig node må vi igjen søke). 16-3
Flervegssøketre I et flervegssøketre, hver node kan ha flere enn to barn det er en spesiell ordnet relasjon mellom nodene i dette kapitlet studerer vi to versjoner av flevegssøketrær 2-3 trær 2-4 trær 16-4
2-3 Trær Et 2-3 tre er et flervegssøketre der hver node har null, to eller tre barn. En node med null eller to barn er kalt en 2-node. En node med null eller tre barn er kalt en 3-node. 16-5
2-3 Trær En 2-node inneholder ett element og har enten ingen eller to barn. -Elementene i venstre undertre er mindre enn elementet i 2-noden. -Elementene i høyre undertre er større eller lik elementet i 2 noden. 16-6
2-3 Trær En 3-node inneholder to elementer, ett kalt det minste og ett kalt det største. En 3-node har enten ingen barn eller tre barn. 16-7
2-3 Trær Hvis en 3-node har barn så gjelder Elementene i venstre undertre er mindre enn det minste elementet. Elementene i det midterste undertre er større eller lik det minste elementet mindre enn det største det største elementet Elementene i det høyre undertret er større eller lik det største elementet 16-8
2-3 Trær Alle bladene i et 2-3 tree er på samme nivå. Det vil si at et 2-3 tre er balansert. 16-9
FIGUR 12.1 Et 2-3 tre 16-10
Innsetting i et 2-3 tre All innsetting i et 2-3 tre foregår tar utgangspunkt i et blad For å sette inn det nye elementet kreves søking for å finne passende blad. Innsetting har tre tilfeller 1) Treet er tomt (det nye elementet blir roten til treet) 2) Innsettingspunktet er en 2-node 3) Innsettingspunktet er en 3-node 16-11
Innsetting i et 2-3 tre Tilfelle 1) Elementet settes inn i en ny 2-node som blir roten til treet. Tilfelle 2) Elementet settes inn i en 2-node (som etter innsetting blir en 3-node) Eksempel: Sette inn 27 16-12
Innsettingspunkt er en 3-node Ser på det det nye elementet sammen med de to gamle i sortert ordning 3-noden blir splittet i to 2-noder, en for det minste elementet og en for det største elementet Midtelementet flyttes opp et nivå dvs forfremmes 16-13
Forfremmelse av midtelement To tilfeller Foreldren på neste nivå er en 2-node. Foreldren på neste nivå er en 3-node. 16-14
Forfremmelse Forelderen er en 2-node. Midtelementet legges til i foreldernoden slik at den blir en 3-node Legger også til referanser til de to nye 2-nodene Eksempel: Setter inn 32 16-15
Forfremmelse Forelder er en 3-node Forelder blir splitta i to 2-noder og midtelementet forfremmes på nytt Dette kan gjentas helt til man kommer til en 2- node eller roten. Kommer man helt til roten og den også er en 3- node, blir roten splittet i to 2-noder. Man får en ny rot som er en 2-node og det er blitt et ekstra nivå i treet 16-16
FIGUR 12.4 Sette inn 57 2) Foreldren til 3-noden er en 3-node 16-17
FIGUR 12.5 Sette inn 25 2) Foreldren til 3-noden er en 3-node 16-18
Fjerne elementer fra et 2-3 tre Tre (hoved)tilfeller: 1) Elementet som skal fjernes er i et blad som er en 3-node. 2) Elementet som skal fjernes er i et blad som er en 2-node. 3) Elementet som skal fjernes er i en intern node. 16-19
Fjerne fra blad som er en 3-node - Fjerner elementet. Eksempel fjerne 51 16-20
Fjerne fra blad som er en 2-node Da oppstår en situasjon som kalles underflyt. Vi må rotere treet og/eller redusere treets høyde for å oppnå egenskapene til et 2-3 tree. Har 4 undertilfeller 16-21
Har en 3-node som søsken Hvis man sletter fra et venstrebarn, så - blir roten nytt venstrebarn - blir minste elementet i høyrebarnet ny rot Eksempel: slette 22 16-22
Har 2-node som søsken Ser på sletting i venstre undertre 1) Flytting: inorden-etterfølger til rot. Ny 2-node lages. Tidligere rot blir ny inorden-forgjenger. Ny 3-node lages. 2) Rotere det minste elementet i den nye 3-noden om foreldren. 16-23
Fjerne elementer fra et 2-3 tre Det tredje av disse undertilfellene har vi når ingen av bladene er 3-noder, men det fins interne noder som er 3-noder. I dette tilfellet kan vi omgjøre en intern 3-node til en 2-node og rotere det passende elementet fra den noden for å balansere treet. 16-24
FIGUR 12.9 Fjerne 55 2) Elementet som skal fjernes er i et blad som er en 2-node der foreldren er en 3-node. Omgjør denne 3-noden til 2-node ved å rotere det minste elementet (60) som vil bli venstre barn. 16-25
FIGUR 12.10 Slette 45 2) Elementet som skal fjernes er i et blad som er en 2-node. Kombinerer bladene med foreldre og søsken. 16-26
Fjerne element i internnode Elementet 30 fjernes ved rotasjon. Ny 2-node. Elementet 60 er i en intern node som er en 3-node. Erstatt med inorden-etterfølgeren og roterer det største elementet (55) om foreldren. Ny 2-node. 16-27
2-4 Tre 2-4 Trær ligner mye på 2-3 trær. En 4-node inneholder tre elementer og har enten ingen barn eller 4 barn. De samme egenskapene for ordning som for 2-3 trær. De samme tilfellene anvendes både for innsetting og fjerning av elementer som illustrereres på følgende lysark. 16-28
FIGUR 12.12 Innsetting i et 2-4 tre 16-29
FIGUR 12.13 Fjerning fra et 2-4 tre 16-30