Fra Kap.10 Binære søketre (BS-tre) Sist oppdatert 20.03.10 Definere en abstrakt datastruktur binært søketre. Vise hvordan binær søketre kan brukes



Like dokumenter
Kap 9 Tre Sist oppdatert 15.03

Definisjon av binært søketre

Definisjon: Et sortert tre

Kap.12. Flervegssøketre. Studerer 2-3 og 2-4 trær. Sist oppdatert

Definisjon. I et binært tre har hver node enten 0, 1 eller 2 barn

Lars Vidar Magnusson

PG4200 Algoritmer og datastrukturer Forelesning 7

INF2220: Forelesning 2

Binære trær: Noen algoritmer og anvendelser

Selv-balanserende søketrær

INF2220: Forelesning 2

INF2220: Forelesning 2. Balanserte søketrær Rød-svarte trær (kapittel12.2) B-trær (kapittel 4.7)

Heap og prioritetskø. Marjory the Trash Heap fra Fraggle Rock

INF2220: Forelesning 1. Praktisk informasjon Analyse av algoritmer (kapittel 2) (Binær)trær (kapittel )

Repetisjon: Binære. Dagens plan: Rød-svarte trær. Oppgave (N + 1)!

EKSAMENSOPPGAVE. INF-1101 Datastrukturer og algoritmer. Adm.bygget, rom K1.04 og B154 Ingen

Ny/utsatt EKSAMEN. Dato: 5. januar 2018 Eksamenstid: 09:00 13:00

INF1010 Rekursive metoder, binære søketrær. Algoritmer: Mer om rekursive kall mellom objekter Ny datastruktur: binært tre

EKSAMEN. Dato: 28. mai 2018 Eksamenstid: 09:00 13:00

Et eksempel: Åtterspillet

Binær heap. En heap er et komplett binært tre:

Binære søketrær. Et notat for INF1010 Stein Michael Storleer 16. mai 2013

INF2220: Gruppe me 2. Mathias Lohne Høsten 2017

... Når internminnet blir for lite. Dagens plan: Løsning: Utvidbar hashing. hash(x) katalog. O modellen er ikke lenger gyldig ved

INF110 Algoritmer og datastrukturer TRÆR. Vi skal i denne forelesningen se litt på ulike typer trær:

Binære søketrær. En ordnet datastruktur med raske oppslag. Sigmund Hansen

Løsningsforslag. Oppgave 1.1. Oppgave 1.2

Et eksempel: Åtterspillet

Liste som abstrakt konsept/datatype

Balanserte binære søketrær

Binære Søketre. Egenskap. Egenskap : Grafisk. Egenskap : Kjøretid. Egenskap : Kjøretid. Egenskap : Oppsumering. Binære Søketre

INF Algoritmer og datastrukturer

INF Algoritmer og datastrukturer

Dagens plan: INF Algoritmer og datastrukturer. Repetisjon: Binære søketrær. Repetisjon: Binære søketrær

EKSAMEN. Dato: 18. mai 2017 Eksamenstid: 09:00 13:00

Kap.8 Sortering og søking sist oppdatert 16.03

EKSAMEN Løsningsforslag. med forbehold om bugs :-)

NITH PG4200 Algoritmer og datastrukturer Løsningsforslag Eksamen 4.juni 2013

Heap* En heap er et komplett binært tre: En heap er også et monotont binært tre:

PG 4200 Algoritmer og datastrukturer Innlevering 2

INF1010 Binære søketrær ++

INF Algoritmer og datastrukturer

Enkle datastrukturer. Lars Greger Nordland Hagen. Introduksjon til øvingsopplegget og gjennomgang av python

UNIVERSITETET I OSLO

Flerveis søketrær og B-trær

Oppgave 1. Sekvenser (20%)

INF Algoritmer og datastrukturer

Algoritmer og datastrukturer Kapittel 9 - Delkapittel 9.2

Hva er en liste? Hvert element har en forgjenger, unntatt første element i listen. Hvert element har en etterfølger, unntatt siste element i listen

INF2220: Forelesning 1

Algoritmer og Datastrukturer

Hvorfor sortering og søking? Søking og sortering. Binære søketrær. Ordnet innsetting forbereder for mer effektiv søking og sortering INF1010 INF1010

Algoritmer og datastrukturer Eksamen

Lars Vidar Magnusson Kapittel 13 Rød-Svarte (Red-Black) trær Rotasjoner Insetting Sletting

Algoritmer og datastrukturer Kapittel 9 - Delkapittel 9.2

Algoritmer og Datastrukturer

KONTINUASJONSEKSAMEN

INF Algoritmer og datastrukturer

Hva er en liste? Hvert element har en forgjenger, unntatt første element i listen. Hvert element har en etterfølger, unntatt siste element i listen

Algoritmer og Datastrukturer IAI 21899

EKSAMEN. Algoritmer og datastrukturer

Trær. En datastruktur (og abstrakt datatype ADT)

EKSAMEN med løsningsforslag

Trær. Består av sammenkoblede noder Hver node har 0 eller flere barne-noder. Må være asyklisk. Et tre med n noder har n-1 kanter.

Hva er en algoritme? INF HØSTEN 2006 INF1020. Kursansvarlige Ragnar Normann E-post: Dagens tema

Eksamen i IN 110, 18. mai 1993 Side 2 Del 1 (15%) Vi skal se på prioritetskøer av heltall, der vi hele tiden er interessert i å få ut den minste verdi

INF2220: Forelesning 1

UNIVERSITETET I OSLO

EKSAMEN. Dato: 9. mai 2016 Eksamenstid: 09:00 13:00

UNIVERSITETET I OSLO

Notater til INF2220 Eksamen

Algoritmer og Datastrukturer

Hva er en kø? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn først

Algoritmer og datastrukturer Eksamen

Løsningsforslag til eksamen i PG4200 Algoritmer og datastrukturer 10. desember 2014

Algoritmer og datastrukturer Kapittel 9 Delkapittel 9.2

København 20 Stockholm

Vanlige datastrukturer. I dette lysarksettet

Pensum: fra boken (H-03)+ forelesninger

Algoritmer og datastrukturer Eksamen

Dagens tema. INF Algoritmer og datastrukturer. Binærtrær. Generelle trær

INF Algoritmer og datastrukturer. Hva er INF2220? Algoritmer og datastrukturer

Søkeproblemet. Gitt en datastruktur med n elementer: Finnes et bestemt element (eller en bestemt verdi) x lagret i datastrukturen eller ikke?

Gjøre noe i hele treet = kalle på samme metode i alle objekten. Java datastruktur Klassestruktur

INF2220: Time 12 - Sortering

E K S A M E N. Algoritmiske metoder I. EKSAMENSDATO: 11. desember HINDA / 00HINDB / 00HINEA ( 2DA / 2DB / 2EA ) TID:

Prioritetskøer. Binære heaper Venstrevridde heaper (Leftist) Binomialheaper Fibonacciheaper

Pensum: fra boken (H-03)+ forelesninger

Eks 1: Binærtre Binærtretraversering Eks 2: Binærtre og stakk

Et eksempel: Åtterspillet

Algoritmer og datastrukturer Kapittel 9 - Delkapittel 9.1

Eksamen iin115 og IN110, 15. mai 1997 Side 2 Oppgave 1 Trær 55 % Vi skal i denne oppgaven se på en form for søkestrukturer som er spesielt godt egnet

Løsningsforslag for Obligatorisk Oppgave 3. Algoritmer og Datastrukturer ITF20006

IN Algoritmer og datastrukturer

KONTINUASJONSEKSAMEN

Ny/utsatt EKSAMEN. Dato: 6. januar 2017 Eksamenstid: 09:00 13:00

Oppgavesettet består av 7 sider, inkludert denne forsiden. Kontroll& at oppgaven er komplett før du begynner å besvare spørsmålene.

Algoritmer og datastrukturer Kapittel 9 - Delkapittel 9.4

Lars Vidar Magnusson

INF2220: Time 4 - Heap, Huffmann

Transkript:

Fra Kap.10 Binære søketre (BS-tre) Sist oppdatert 20.03.10 Definere en abstrakt datastruktur binært søketre. Vise hvordan binær søketre kan brukes til å løse problemer. Undersøke ulike implementasjoner for binært søketetre. Sammenligne ulike implementasjoner.

Binær søketre Et binært søketre er et binært tre med tilleggsegenskapen: For hver node x (unntatt bladene) er alle elementene i venstreundertre til x mindre enn elementet til x og alle elementene i høyre undertre til x er større eller lik elementet til x.

Binær søketre < < <

Binær søketre 9 5 15 1 7 11 20 13

Fordeler Effektiv søking dersom treet er brukbart balansert (tilsvarer binærsøk i sortert tabell) Effektiv innsetting og sletting (sparer parallellforskyvingen som vi må ha i en sortert tabell dersom vi har vanlig implementering med noder og pekere. Copyright 2005 Pearson Addison-Wesley. All rights reserved. 13-5

Operasjoner for et bs-tre leggtilelement legger til et element fjern fjernmin - fjerne et element hvis det fins - prinsippet, eget ark - fjerne det minste elementet fjernmaks - fjerne det største elementet finn - finner et element hvis det fins inorden systematisk gjennomgang (får sortert) antall og tom

Implementere bs-tre med kjeding Vi kan lage en klasse KjedetBinærSøkeTre. Se utdelt kode Denne klassen vil ha to konstruktører, en som oppretter et tomt tre og en som oppretter et tre med en node.

Binært søketre leggtil-metoden finner den passende lokasjonen for et gitt element og legger det til treet som et blad.

Inorden gjennomgang av et BS-tre 5 3 7 4 Inorden gjennomgang av et bs-tre vil gi en ordnet sekvens av elementene i stigende rekkefølge: 3, 4, 5, 7

Trestrukturen i et BS-tre avhengig av inndatarekkefølgen! Samme data som i sted, men inndatarekkefølgen er nå 7, 5, 4, 3 7 5 4 3

Fjerne et element se eget ark Fjerne et element fra et binært søketre krever tre steg: Finne elementet Hvis noden ikke er et blad, så erstatt det med dens inorden etterfølger. (største elementet i nodens venstre undertre, eller minste elementet i nodens høyre undertre) Returner elementet som er fjernet

Fjerne det minste elementet Det er tre tilfeller for lokasjonen til det minste elementet i et binært søketre. Hvis roten ikke har venstrebarn, så er roten det minste elementet og høyre barn til roten blir den nye roten. Hvis noden lengst mot venstre er et blad, så settes foreldrens venstrebarn til null. Hvis noden lengst til venstre er en intern node, så settes foreldrens venstrebarn til å peke på nodens høyrebarn.

FIGUR 10.5 Fjerne det minste elementet

Binært søketre som ordnet liste En effektiv implementasjon av en ordnet liste dersom treet er balansert. class OrdnaListeBST{.} Operasjoner som innsetting, søking og sletting vil være av O(logn) dersom treet er balansert. Disse operasjonene vil være mindre effektive, O(n), i kjedet lineær struktur.

Binært søketre som ordnet liste Operasjoner i ordnet liste - fjernførste(), fjernsiste(), siste(), første() - fjern(el), finn(el) - tom(), antal() - leggtil(el) Alternativ 1 Lærebok Listing 10.2 Bruker arv og lager klassen OrdnaListeBST som arver fra klassen BSTre (super) Eks: public T fjernførste(){ return fjernmin() } Alternativ 2: Lager ny, selvstendig klasse OrdnaListeBST - Data i et OrdnaListeBST-objekt: Et objekt av klassen BSTre, aggregering. Se utdelt kode.

Balansert binært søketre Hvorfor er balansering av søktre så avgjørende? La oss se på hva som skjer når vi setter inn følgende tall uten å balansere: 3, 5, 9, 12, 18, 20

FIGUR 10.9 Et helt ubalansert binært søketre

Degenerert binært søketre Et slikt helt ubalansert søketere er kalt et degenerert binært søketre. Degenererte binære søketre har høyde lik n og søkingen blir da O(n) som er minst effektiv. For et balansert søketre er høyden log 2 n og søkingen blir da O(logn) som er mest effektiv.

Balansering av binært søketre Metode 1) Gjennomgå treet i inorden og skrive til tabell. Får da ut en ordnet liste. Lager så et nytt tre ved rekursiv innsetting. Velg midtelementet som rot. Sette inn venstre undertre rekursivt. Sette inn høyre undertre rekursivt.

Balansering av binært søketre Metode 2) En mindre arbeidskrevende metode er å bruke rotasjoner. Vi ser her på enten venstrerotasjon eller høyrerotasjon. Noen ganger må en kombinere både venstre- og høyrerotasjon for å oppnå balansering.

Balansering av binært søketre Høyrerotasjon vil løse en ubalanse når det fins en lang sti i venstre undertre til venstrebarn(nodec) til roten (noden). nodec skal bli ny rot. Algortitme roterhøyre(noden) nodec = venstrebarn til noden Sett noden sitt venstrebarn til nodec sitt høyrebarn Sett nodec sitt høyrebarn til noden

FIGUR 10.10 Ubalansert tre og balansert tre etter en høyrerotasjon

Balansering av binært søketre Venstrerotasjon vil løse en ubalanse hvis det fins en lang sti i høyre undertre til høyrebarn (nodec) til roten(noden). nodec skal bli ny rot. Algoritme rotervenstre(noden) nodec = høyrebarn til noden Sett noden sitt høyrebarn til nodec sitt venstrebarn Sett nodec sitt venstrebarn til noden

FIGUR 10.11 Ubalansert tre og balansert tre etter en venstrerotasjon.