Datastrukturer som passar för sökning. Föreläsning 10 Innehåll. Inordertraversering av binära sökträd. Binära sökträd Definition

Storlek: px
Starta visningen från sidan:

Download "Datastrukturer som passar för sökning. Föreläsning 10 Innehåll. Inordertraversering av binära sökträd. Binära sökträd Definition"

Transkript

1 Föreläsning Innehåll inära sökträd algoritmer för sökning, insättning och borttagning implementering effektivitet alanserade binära sökträd VL-träd Datastrukturer som passar för sökning ntag att vi i ett program ska hantera ett stort antal element av något slag. Det ska gå snabbt att sätta in ett element ta bort ett element söka efter ett visst element Vilken/vilka datastrukturer passar bra för detta? vektor, enkellänkad lista insättning snabb O() sökning (linjärsökning) och borttagning långsamma O(n) sorterad vektor sökning (binärsökning) snabb O(logn) insättning och borttagning långsamma O(n) Det finns datastrukturer som passar bättre för detta: inära sökträd Hashtabeller Datavetenskap (LTH) Föreläsning VT / Datavetenskap (LTH) Föreläsning VT / inära sökträd Definition Ett binärt sökträd är ett binärt träd där följande gäller för varje nod n: lla värden som finns i noder i vänster subträd till n är mindre än värdet som finns i n. lla värden som finns i noder i höger subträd till n är större än värdet som finns i n. Dubbletter tillåts alltså inte. Inordertraversering av binära sökträd Genomgång av trädet i inorder besöker noderna i väande ordning. Eempel: En inordertraversering av trädet i figuren ger noderna i ordningen,,,,, Datavetenskap (LTH) Föreläsning VT / Datavetenskap (LTH) Föreläsning VT /

2 inära sökträd sökning inära sökträd - sökning Eempel Då man söker efter ett element i ett binärt sökträd kan man utnttja ordningen i trädet: örja i roten, jämför med sökt element, om likhet är vi klara. Sök efter i trädet: Sök efter i trädet: Om är mindre än rotens element: gå till vänster barn annars gå till höger barn. örja här: örja här: Fortsätt på samma sätt tills vi hittar det sökta, eller tills den nod som står i tur att undersökas är null (misslckad sökning). Man följer alltså en gren i trädet: Klart! Grenen börjar i roten. Man fortsätter tills man hittar det sökta eller till grenen tar slut (misslckad sökning). Misslckad sökning! Datavetenskap (LTH) Föreläsning VT / Datavetenskap (LTH) Föreläsning VT / Diskutera inära sökträd - insättning Eempel Hur går insättning i ett binärt sökträd till? Var i trädet ska sättas in? Var i trädet ska 7 sättas in? Sätt in i trädet: örja här: Efter insättning: Misslckad sökning! Sätt in här. Datavetenskap (LTH) Föreläsning VT 7 / Datavetenskap (LTH) Föreläsning VT /

3 inära sökträd - insättning Eempel inära sökträd insättning Sammanfattning Sätt in i trädet: örja här: Vid insättning av ntt element ska ordningen i trädet bevaras. Dubbletter får inte förekomma. Dubblett hittas. Insättningen genomförs inte. Insättning kan tolkas som misslckad sökning : Vi söker på en gren i trädet. Om vi misslckas med hitta det element som ska sättas in utförs insättningen som ett löv på den plats i trädet där misslckandet konstaterats. Datavetenskap (LTH) Föreläsning VT / Datavetenskap (LTH) Föreläsning VT / inära sökträd borttagning inära sökträd - borttagning Eempel på enkelt fall - noll barn För att kunna ta bort ett element ur trädet måste vi söka upp det. När vi tar bort det måste vi koppla ihop föräldern med något av barnen. Vid sökningen behöver man därför hålla reda på en referens till föräldern. Sammankopplingen sköts på olika sätt beroende på hur många barn som finns till den nod som ska bort: Enklaste fallen är noll eller ett barn. Fallet två barn är lite krångligare. Tag bort ur trädet. örja med att söka efter noden (och föräldern). parent = null act parent act Noden, act, som ska bort är ett löv. Sätt den referens i parent som refererar till act till null. Datavetenskap (LTH) Föreläsning VT / Datavetenskap (LTH) Föreläsning VT /

4 inära sökträd - borttagning Eempel på enkelt fall - ett barn inära sökträd - borttagning Eempel - två barn Tag bort ur trädet. örja med att söka efter noden (och föräldern). parent = null act parent act Noden, act, som ska bort har ett barn. Sätt den referens i parent som refererar till act till att referera till act:s barn. Tag bort ur trädet. parent act min Noden, act, som ska bort har två barn: Sök upp minsta noden (min) i act:s högra subträd Fltta data från denna till act Tag bort min Datavetenskap (LTH) Föreläsning VT / Datavetenskap (LTH) Föreläsning VT / inära sökträd - borttagning Eempel - två barn, forts inära sökträd borttagning Specialfall Efter flttning av data från min till act: Efter borttagning av min: I några av de fall som beskrivits finns det ett alternativ som måste hanteras speciellt: förälder till den nod som skall tas bort saknas, d.v.s. roten tas bort. Fall : roten ska då bli null. Fall : roten ska referera till act:s barn. min Observera att borttagning av min är ett enklare fall eftersom denna nod kan ha högst ett barn (höger). Datavetenskap (LTH) Föreläsning VT / Datavetenskap (LTH) Föreläsning VT /

5 Implementering av binära sökträd Klassen inarsearchtree Sökning i binärt sökträd pseudokod Eempel på hur en klass som representerar ett binärt sökträd kan se ut: public class inarsearchtree<e> { private Node<E> root; public inarsearchtree() { root = null; public boolean add(e e) {... public E find(e ) {... public boolean remove(e ){ E find(node, ) { om node == null) return null annars om är lika med node.data return node.data; annars om är mindre än node.data return find(node.left, ) // sök i vänster subträd annars return find(node.right, ) // sök i höger subträd // nästlad klass Node<E> med attributen data, left och right // som representerar en nod... nropas find(root, ) Datavetenskap (LTH) Föreläsning VT 7 / Datavetenskap (LTH) Föreläsning VT / Diskutera Metoden find public E find(e ) { return find(root, ); Hur ska jämförelserna mellan två element i trädet gå till? om är lika med node.data om är mindre än node.data private E find(node<e> n, E ) { if (n == null) { return null; int compresult = ((omparable<e>) ).compareto(n.data); if (compresult == ) { return n.data; else if (compresult < ) { return find(n.left, ); else { return find(n.right, ); Datavetenskap (LTH) Föreläsning VT / Datavetenskap (LTH) Föreläsning VT /

6 Interfacet omparable Repetition Kommentarer Metoden compareto i interfacet omparable används inuti add, find och remove för att jämföra två element. public interface omparable<t> { /** * ompares this object with the specified object for order. * Returns a negative integer, zero, or a positive integer as * this object is less than, equal to, or greater than the * specified object. */ public int compareto(t ); Klassen som ersätter E måste implementera omparable<e>. nnars genereras lassasteception när find eekveras. För att anropet av compareto ska fungera måste vi tpkonvertera till omparable<e>:... ((omparable<e>) ).compareto(node.data)... En annan lösning är att via en konstruktor förse klassen inarsearchtree med ett komparator-objekt comp och använda metoden compare för att jämföra:... comp.compare(, node.data)... Datavetenskap (LTH) Föreläsning VT / Datavetenskap (LTH) Föreläsning VT / Eempel på användning av klassen inarsearchtree Implementering av interfacet omparable Klassen Person // Skapa ett träd sorterat efter idnummer inarsearchtree<person> bst = new inarsearchtree<person>(); bst.add(new Person("Fili", )); bst.add(new Person("alin", ));... // sök efter personen med idnummer Person p = bst.find(new Person(null, ); Klassen Person måste implementera omparable<person>. Observera att man måste skapa ett Person-objekt för att kunna söka efter en person i trädet. Detta objekt måste få korrekta värden på de attribut som används för jämförelser i compareto. public class Person implements omparable<person> { private String name; private int id;... public int compareto(person other) { return Integer.compare(id, other.id); omparable är ett generiskt interface. I eemplet är Person tpargument. Observera att parametern i compareto därför har tpen Person. Datavetenskap (LTH) Föreläsning VT / Datavetenskap (LTH) Föreläsning VT /

7 Interfacet omparator Vi ska se till att det finns ett alternativ till compareto för att jämföra element inuti trädklassen. Interfacet omparator ger oss möjlighet att jämföra objekt av en klass på flera olika sätt. public interface omparator<t> { /** * ompares its two arguments for order. * Returns a negative integer, zero, or a positive * integer as the first argument is less than, * equal to, or greater than the second. */ int compare(t e, T e); Datavetenskap (LTH) Föreläsning VT / Konstruktor med parameter av tpen omparator Klassen inarsearchtree public class inarsearchtree<e> { private Node<E> root; private omparator<e> comp; /** Skapar ett tomt binärt sökträd. Elementen förutsätts vara av en klass som implementerar omparable<e>. */ public inarsearchtree() { root = null; comp = null; /** Skapar ett tomt binärt sökträd. Elementen jämförs med komparatorn comp. */ public inarsearchtree(omparator<e> comp) { root = null; this.comp = comp;... Datavetenskap (LTH) Föreläsning VT / Metod för att välja mellan compareto och compare privat metod i klassen inarsearchtree Metoden find nvändning av metoden compareelements... private int compareelements(e e, E e) { if (comp == null) { return ((omparable<e>) e).compareto(e); else { return comp.compare(e, e);... public E find (E target) { return find(root, target); private E find(node<e> n, E target) { if (n == null) { return null; int compresult = compareelements(target, n.data); if (compresult == ) { return n.data; else if (compresult < ) { return find(n.left, target); else { return find(n.right, target); // ntt Datavetenskap (LTH) Föreläsning VT 7 / Datavetenskap (LTH) Föreläsning VT /

8 Två konstruktorer Skapa komparator-objekt med lambdauttrck Nu har klassen två konstruktorer: public inarsearchtree(); public inarsearchtree(omparator<? super E> c); nvänds den första konstruktorn, förutsätts elementen implementera omparable annars genereras lassasteception. Inuti trädklassen används metoden compareto för att jämföra två objekt. Den andra konstruktorn har en parameter av tpen omparator. Vid anrop skickar man med en referens till ett objekt av en klass som implementerar interfacet omparator. nvänds denna kommer jämförelser att utföras med hjälp av komparatorns metod compare. // Skapa ett träd sorterat efter namn inarsearchtree<person> bst = new inarsearchtree<person>( (p, p) -> p.getname().compareto(p.getname()) ); bst.add(new Person("Fili", )); bst.add(new Person("alin", ));... // sök efter personen med namnet alin Person p = bst.find(new Person(alin, -); Interfacet omparator<e> är ett funktionellt interface, d.v.s. den har bara en abstrakt metod. Isådanafallkanmananvändalambdauttrckiställetföratt skriva en klass som implementerar interfacet skapa ett objekt av denna klass och skicka med en referens till ett sådant objekt som argument. Datavetenskap (LTH) Föreläsning VT / Datavetenskap (LTH) Föreläsning VT / Skapa komparator-objekt längre version Vad betder? super E Överkurs Skriv en komparatorklass som implementerar interfacet omparator: public class Nameomparator implements omparator<person> { public int compare(person p, Person p) { return p.getname().compareto(p.getname()); Skapa ett objekt av komparatorklassen och skicka med som argument till konstruktorn i trädklassen: inarsearchtree<person> bst = new inarsearchtree<person>(new Nameomparator());? super E kan utläsas okänd superklass till E (inklusive E) Tpen omparator<? super E> bör användas i trädklassen istället för omparator<e>. Förklaring: ntag att vi har följande klasser: class Person {... class Student etends Person {... class Nameomparator implements omparator<person> {... Om omparator<e> används inuti trädklassen kan vi inte skriva: inarsearchtree<student> bst = new inarsearchtree<student>(new Nameomparator()); Det finns ingen klass som implementerar omparator<student>. Istället lättar vi på på kravet och kräver att komparatorklassen istället ska implementera omparator<? super E>. Då kan vi skapa studentträdet eftersom Person är superklass till Student. Datavetenskap (LTH) Föreläsning VT / Datavetenskap (LTH) Föreläsning VT /

9 Diskutera inära sökträd tidskompleitet En traversering genom alla noderna i ett träd med n noder har tidskompleiteten O(n). Varje nod besöks en gång. Vad påverkar effektiviteten för operationerna sökning, insättning och borttagning? Vad får dessa metoder för tidskompleitet? Operationerna sökning, insättning och borttagning innebär sökning utmed en gren i trädet. Ivarjenodgörsettkonstantarbete(väsentligenenjämförelse). Den längsta grenen i ett träd har h noder, där h är trädets höjd. Värsta fall för samtliga operationer är alltså O(h). Vi vill uttrcka tidskompleiteten som en funktion av antal noder, n. Vi måste alltså känna till sambandet mellan trädet höjd och antal noder. Datavetenskap (LTH) Föreläsning VT / Datavetenskap (LTH) Föreläsning VT / Samband mellan höjd och antal noder i binära träd För alla binära träd T med n noder gäller för höjden h och h h apple n () log(n + ) () () är enkelt att inse. Trädet får största möjliga höjd om man placerar en nod på varje nivå. Höjden blir då n. E. för n = : Samband mellan höjd och antal noder i binära träd, forts (): På nivå ett finns en nod (roten). På nivå två högst noder, på nivå tre högst nodet etc. llmänt finns det på nivå i högst i noder. Den högsta nivån i ett träd med höjd h är h. =) antal noder, n apple i h = h = h. Vilket ger att h log(n + ) Här har vi använt formeln för geometrisk summa: + a + a a k = ak+ a Datavetenskap (LTH) Föreläsning VT / Datavetenskap (LTH) Föreläsning VT /

10 inära sökträd tidskompleitet Diskutera Samtliga operationer (sökning, insättning, borttagning) innebär sökning utmed en gren i trädet. I varje nod görs ett konstant arbete (väsentligen en jämförelse). Den längsta grenen i ett träd har h noder, där h är trädets höjd. Värsta fall för samtliga operationer är alltså O(h). Sätt in,,... 7 (i den ordningen) Sätt in,,,,,, 7: Sätt in,,,, 7,, : Vi har tidigare visat att för alla binära träd med n noder gäller att log(n + ) apple höjden apple n De tre operationerna har tidskompleitet O(n) i värsta fall och O( log n) ibästafall. Vilken insättningsordning ger bästa respektive sämsta formen på trädet? Datavetenskap (LTH) Föreläsning VT 7 / Datavetenskap (LTH) Föreläsning VT / inära sökträd tidskompleitet, forts inära sökträd med minimal höjd Trädets höjd påverkas av insättningar och borttagningar. Ivärstafallbestårträdetavenendagrenochvärstafallstidenför sökning, insättning och borttagning blir O(n). Vid slumpmässiga insättningar och borttagningar blir tidskompleiteten i medelfall O( log n). Vi ska stra se hur man kan hålla trädet balanserat och även få en värstafallstid på O( log n). Den idealiska formen på ett binärt sökträd: lla nivåer, utom möjligen den högsta, har så många noder som är möjligt. Det betder att noderna ligger så nära roten som möjligt. Då blir trädets höjd garanterat O( log n). Datavetenskap (LTH) Föreläsning VT / Datavetenskap (LTH) Föreläsning VT /

11 Eempel på binära träd med minimal höjd inära sökträd - tidskompleitet Ett binärt träd är perfekt (eng: perfect binar tree) omallanoder utom löven har två barn och om alla löven befinner sig på samma nivå. Då har trädet formen: Ett binärt träd är komplett (eng: complete binar tree) om alla nivåer utom den högsta är fllda med noder och om noderna på den högsta nivån är samlade längst till vänster. Då har trädet formen: Det finns ingen tillräckligt effektiv algoritm för att se till att ett binärt sökträd får den idealiska formen. Trädet behöver inte ha denna form för att garantera att alla operationer blir O( log n) ivärstafall. Det räcker att garantera att höjden är proprtionell mot log n, d.v.s. att h = O( log n). Det finns effektiva algoritmer för att i samband med insättning och borttagning garantera att trädets höjd alltid är O( log n). Datavetenskap (LTH) Föreläsning VT / Datavetenskap (LTH) Föreläsning VT / alanserade binära sökträd VL-träd alanserade binära sökträd Georg delson-velsk and Evgenii Landis gjorde följande definition: alanserat binärt träd Ett binärt träd är balanserat om det för varje nod i trädet gäller att höjdskillnaden mellan dess båda subträd är högst ett. De visade också att Ibalanseradeträdärhöjdenh apple. log n. Det finns effektiva algoritmer för att se till att binära sökträd förblir balanserade vid insättningar och borttagningar. alanserat träd Obalanserat träd Datavetenskap (LTH) Föreläsning VT / Datavetenskap (LTH) Föreläsning VT /

12 alanserade binära sökträd Diskutera balans = h R h L h R = höger subträds höjd h L = vänster subträds höjd Vad händer med trädets balansering om man lägger till? Hur kan man rätta till det? alanserat träd Obalanserat träd Datavetenskap (LTH) Föreläsning VT / Datavetenskap (LTH) Föreläsning VT / alansering av binära sökträd alanseringsalgoritmerna arbetar med rotationer i trädet: alansering av binära sökträd Eempel Obalanserat vid : Efter en enkel högerrotation: Enkel högerrotation vid =) Enkel vänsterrotation vid =) Datavetenskap (LTH) Föreläsning VT 7 / Datavetenskap (LTH) Föreläsning VT /

13 alansering av binära sökträd Ibland behövs dubbelrotationer: z z D D Höger-vänsterdubbelrotation =) Vänster-högerdubbelrotation =) z z D D alansering av binära sökträd Eempel - dubbelrotationer Efter insättning av 7 får man trädet: 7 Det råder nu obalans vid men om man försöker med en enkel högerrotation blir det: 7 Detta träd är fortfarande obalanserat! Istället måste man göra en dubbel vänsterhögerrotation (se nästa bild). Datavetenskap (LTH) Föreläsning VT / Datavetenskap (LTH) Föreläsning VT / alansering av binära sökträd Eempel - dubbelrotationer alansering av binära sökträd Obalanserat vid : 7 Efter en vänster-högerrotation: 7 Obalans måste kunna upptäckas: Man kan ha ett heltalsattribut balance i nodklassen. I balance bokförs höjdskillnaden mellan höger och vänster subträd. Isambandmedinsättning/borttagningändrasev.höjdenavsubträd och attributet uppdateras Om höjdskillnaden blir > eller < sååtgärdasdetmed rotation(er) som i sin tur förändrar höjd och balance hos subträd. Efter eventuella rotation(er) blir absolutbeloppet av balance åter apple. Datavetenskap (LTH) Föreläsning VT / Datavetenskap (LTH) Föreläsning VT /

14 alansering av binära sökträd kostnad alansering av binära sökträd kostnad Man kan visa att: Om obalans uppstår till följd av en insättning i ett tidigare balanserat träd så räcker det med en enkel- eller dubbelrotation för att återställa balansen. Om obalans uppstår till följd av en borttagning ur ett tidigare balanserat träd så kan det behövas en enkel- eller dubbelrotation i varje nod på vägen från den nod där obalans uppstod till roten för att återställa balansen. Höjden förblir O( log n) om man balanserat trädet vid varje förändring. En enskild rotation kostar bara O(). Kostnaden för balansering i samband med en insättning eller borttagning är O( log n). Om ett binärt sökträd hålls balanserat kommer sökning, insättning och borttagning därmed att kosta O( log n) ivärstafall. Datavetenskap (LTH) Föreläsning VT / Datavetenskap (LTH) Föreläsning VT / Eempel på vad du ska kunna Förklara begreppet binära sökträd. Förklara hur insättning, sökning och borttagning går till i ett binärt sökträd. Kunna implementera ett binärt sökträd med metoder för sökning och insättning. Känna till och kunna implementera interfacet omparable. Känna till och kunna implementera interfacet omparator. Kunna skicka med lambdauttrck som argument till parametrar av tpen omparator. Förklara begreppet balanserat binärt sökträd och varför man vill ha balanserade träd. Förklara begreppet VL-träd. nge tidskompleitet för operationer på binära sökträd. Datorlaboration inära sökträd Implementera en egen generisk klass för binära sökträd. Tips: I flera fall blir det en (kort) publik metod som anropar en privat rekursiv metod. I en av metoderna ska ett ntt träd bggas upp från värden i en vektor. Hämta inspiration från den rekursiva algoritmen för binärsökning. Rita för att förstå vad som händer i programmet! Innehåll: binära sökträd, rekursion, länkad struktur. Datavetenskap (LTH) Föreläsning VT / Datavetenskap (LTH) Föreläsning VT /

Datastrukturer som passar för sökning. Föreläsning 11 Innehåll. Binära sökträd Definition. Inordertraversering av binära sökträd

Datastrukturer som passar för sökning. Föreläsning 11 Innehåll. Binära sökträd Definition. Inordertraversering av binära sökträd Föreläsning Innehåll inära sökträd algoritmer för sökning, insättning och borttagning implementering effektivitet balanserade binära sökträd, VL-träd Jämföra objekt interfacet omparable Interfacet omparator

Läs mer

Binära sökträd. Seminarium 9 Binära sökträd Innehåll. Traversering av binära sökträd. Binära sökträd Definition. Exempel på vad du ska kunna

Binära sökträd. Seminarium 9 Binära sökträd Innehåll. Traversering av binära sökträd. Binära sökträd Definition. Exempel på vad du ska kunna Seminarium inära sökträd Innehåll inära sökträd inära sökträd Definition Implementering lgoritmer Sökning Insättning orttagning Effektivitet alanserade binära sökträd Eempel på vad du ska kunna Förklara

Läs mer

Föreläsning 10 Innehåll. Diskutera. Inordertraversering av binära sökträd. Binära sökträd Definition

Föreläsning 10 Innehåll. Diskutera. Inordertraversering av binära sökträd. Binära sökträd Definition Föreläsning Innehåll Diskutera Binära sökträd algoritmer för sökning, insättning och borttagning implementering effektivitet balanserade binära sökträd, AVL-träd Jämföra objekt interfacet Comparable Interfacet

Läs mer

Föreläsning 10 Innehåll

Föreläsning 10 Innehåll Föreläsning 10 Innehåll Binära sökträd algoritmer för sökning, insättning och borttagning implementering effektivitet balanserade binära sökträd, AVL-träd Jämföra objekt interfacet Comparable Interfacet

Läs mer

Föreläsning 11 Innehåll. Diskutera. Binära sökträd Definition. Inordertraversering av binära sökträd

Föreläsning 11 Innehåll. Diskutera. Binära sökträd Definition. Inordertraversering av binära sökträd Föreläsning Innehåll Diskutera Binära sökträd algoritmer för sökning, insättning och borttagning implementering effektivitet balanserade binära sökträd, AVL-träd Jämföra objekt interfacet Comparable Interfacet

Läs mer

Föreläsning 9 Innehåll

Föreläsning 9 Innehåll Föreläsning 9 Innehåll Binära sökträd algoritmer för sökning, insättning och borttagning, implementering effektivitet balanserade binära sökträd, AVL-träd Abstrakta datatyperna mängd (eng. Set) och lexikon

Läs mer

Föreläsning 9 Datastrukturer (DAT037)

Föreläsning 9 Datastrukturer (DAT037) Föreläsning Datastrukturer (DAT07) Fredrik Lindblad 27 november 207 Slides skapade av Nils Anders Danielsson har använts som utgångspunkt Se http://wwwcsechalmersse/edu/year/20/course/dat07 Innehåll 2

Läs mer

Datastrukturer i kursen. Föreläsning 8 Innehåll. Träd rekursiv definition. Träd

Datastrukturer i kursen. Föreläsning 8 Innehåll. Träd rekursiv definition. Träd Föreläsning 8 Innehåll Datastrukturer i kursen Träd, speciellt binära träd egenskaper användningsområden implementering Undervisningsmoment: föreläsning 8, övningsuppgifter 8, lab 4 Avsnitt i läroboken:

Läs mer

Föreläsning 9 Innehåll

Föreläsning 9 Innehåll Föreläsning 9 Innehåll Träd, speciellt binära träd egenskaper användningsområden implementering Datavetenskap (LTH) Föreläsning 9 HT 2017 1 / 31 Inlämningsuppgiften De föreläsningar som inlämningsuppgiften

Läs mer

Föreläsning 7. Träd och binära sökträd

Föreläsning 7. Träd och binära sökträd Föreläsning 7 Träd och binära sökträd Föreläsning 7 Träd Binära träd Binärt sökträd som ADT Implementering av binärt sökträd Travestera binärt sökträd Sökning Insättning/borttagning Det är extra mycket

Läs mer

ADT Prioritetskö. Föreläsning 13 Innehåll. Prioritetskö vs FIFO-kö. Prioritetskö Exempel på användning. Prioritetsköer och heapar

ADT Prioritetskö. Föreläsning 13 Innehåll. Prioritetskö vs FIFO-kö. Prioritetskö Exempel på användning. Prioritetsköer och heapar Föreläsning 1 Innehåll ADT Prioritetskö Prioritetsköer och heapar Prioritetsköer och heapar ADT prioritetskö Klassen PriorityQueue i java.util ar Implementering av prioritetskö med heap Sortering med hjälp

Läs mer

Inlämningsuppgiften. Föreläsning 9 Innehåll. Träd. Datastrukturer i kursen

Inlämningsuppgiften. Föreläsning 9 Innehåll. Träd. Datastrukturer i kursen Föreläsning 9 Innehåll Inlämningsuppgiften De föreläsningar som inlämningsuppgiften bygger på är nu klara. Det är alltså dags att börja arbeta med inlämningsuppgiften. Träd, speciellt binära träd egenskaper

Läs mer

Föreläsning Datastrukturer (DAT036)

Föreläsning Datastrukturer (DAT036) Föreläsning Datastrukturer (DAT036) Nils Anders Danielsson 2013-11-25 Idag Starkt sammanhängande komponenter Duggaresultat Sökträd Starkt sammanhängande komponenter Uppspännande skog Graf, och en möjlig

Läs mer

ADT Prioritetskö. Föreläsning 12 Innehåll. Prioritetskö. Interface för Prioritetskö. Prioritetsköer och heapar

ADT Prioritetskö. Föreläsning 12 Innehåll. Prioritetskö. Interface för Prioritetskö. Prioritetsköer och heapar Föreläsning 1 Innehåll Prioritetsköer och heapar Prioritetsköer och heapar ADT prioritetskö Klassen PriorityQueue i java.util Heapar Implementering av prioritetskö med heap Sortering med hjälp av heap

Läs mer

Föreläsning 10 Innehåll. Prioritetsköer och heapar. ADT Prioritetskö. Interface för Prioritetskö. Exempel på vad du ska kunna

Föreläsning 10 Innehåll. Prioritetsköer och heapar. ADT Prioritetskö. Interface för Prioritetskö. Exempel på vad du ska kunna Föreläsning Innehåll Prioritetsköer och heapar Prioritetsköer och heapar ADT prioritetskö Klassen PriorityQueue i java.util Implementering med lista ar Implementering av prioritetskö med heap Sortering

Läs mer

Föreläsning 14 Innehåll

Föreläsning 14 Innehåll Föreläsning 14 Innehåll Abstrakta datatyper, datastrukturer Att jämföra objekt övriga moment i kursen Om tentamen Skriftlig tentamen både programmeringsuppgifter och teoriuppgifter Hitta fel i fingerade

Läs mer

Hitta k största bland n element. Föreläsning 13 Innehåll. Histogramproblemet

Hitta k största bland n element. Föreläsning 13 Innehåll. Histogramproblemet Föreläsning 13 Innehåll Algoritm 1: Sortera Exempel på problem där materialet i kursen används Histogramproblemet Schemaläggning Abstrakta datatyper Datastrukturer Att jämföra objekt Om tentamen Skriftlig

Läs mer

Föreläsning 7 Innehåll. Rekursion. Rekursiv problemlösning. Rekursiv problemlösning Mönster för rekursiv algoritm. Rekursion. Rekursivt tänkande:

Föreläsning 7 Innehåll. Rekursion. Rekursiv problemlösning. Rekursiv problemlösning Mönster för rekursiv algoritm. Rekursion. Rekursivt tänkande: Föreläsning 7 Innehåll Rekursion Rekursivt tänkande: Hur många år fyller du? Ett år mer än förra året! Rekursion Rekursiv problemlösning Binärsökning Generiska metoder Rekursiv problemlösning: Dela upp

Läs mer

Föreläsning 4 Innehåll. Abstrakta datatypen lista. Implementering av listor. Abstrakt datatypen lista. Abstrakt datatyp

Föreläsning 4 Innehåll. Abstrakta datatypen lista. Implementering av listor. Abstrakt datatypen lista. Abstrakt datatyp Föreläsning 4 Innehåll Abstrakta datatypen lista Definition Abstrakta datatypen lista egen implementering Datastrukturen enkellänkad lista Nästlade klasser statiska nästlade klasser inre klasser Listklasser

Läs mer

Föreläsning 11 Innehåll

Föreläsning 11 Innehåll Föreläsning 11 Innehåll Hashtabeller implementering, effektivitet Metoden hashcode i Java Abstrakta datatyperna mängd (eng. Set) och lexikon (eng. Map) Interfacen Set och Map i Java Datavetenskap (LTH)

Läs mer

Självbalanserande träd AVL-träd. Koffman & Wolfgang kapitel 9, avsnitt 1 2

Självbalanserande träd AVL-träd. Koffman & Wolfgang kapitel 9, avsnitt 1 2 Självbalanserande träd AVL-träd Koffman & Wolfgang kapitel 9, avsnitt 1 2 1 Balanserade träd Nodbalanserat träd: skillnaden i antalet noder mellan vänster och höger delträd är högst 1 Höjdbalanserat träd:

Läs mer

Diskutera. Hashfunktion

Diskutera. Hashfunktion Föreläsning 1 Innehåll Diskutera Hashtabeller implementering, effektivitet Metoden hashcode i Java Abstrakta datatyperna mängd (eng. Set) och lexikon (eng. Map) Interfacen Set och Map i Java Tidigare har

Läs mer

Föreläsning 5 TDDC91,TDDE22,725G97: DALG. Föreläsning i Datastrukturer och algoritmer 18 september 2018

Föreläsning 5 TDDC91,TDDE22,725G97: DALG. Föreläsning i Datastrukturer och algoritmer 18 september 2018 Föreläsning 5 TDDC91,TDDE22,725G97: DALG Föreläsning i Datastrukturer och algoritmer 18 september 2018 Institutionen för datavetenskap Linköpings universitet 5.1 Introduktion find,insert och remove i ett

Läs mer

Algoritmer och datastrukturer 2012, fo rela sning 8

Algoritmer och datastrukturer 2012, fo rela sning 8 lgoritmer och datastrukturer 01, fo rela sning 8 Komplexitet för binära sökträd De viktigaste operationerna på binära sökträd är insert, find och remove Tiden det tar att utföra en operation bestäms till

Läs mer

Tentamen, Algoritmer och datastrukturer

Tentamen, Algoritmer och datastrukturer UNDS TEKNISKA ÖGSKOA (6) Institutionen för datavetenskap Tentamen, Algoritmer och datastrukturer 23 8 29, 8. 3. Anvisningar: Denna tentamen består av fem uppgifter. Totalt är skrivningen på 36 poäng och

Läs mer

Lösningsförslag till tentamen i EDA690 Algoritmer och Datastrukturer, Helsingborg

Lösningsförslag till tentamen i EDA690 Algoritmer och Datastrukturer, Helsingborg LUNDS TEKNISKA HÖGSKOLA 1(5) Institutionen för datavetenskap Lösningsförslag till tentamen i EDA690 Algoritmer och Datastrukturer, Helsingborg 2013 12 19 1. a) En samling element där insättning och borttagning

Läs mer

Föreläsning 13 Innehåll

Föreläsning 13 Innehåll Föreläsning 13 Innehåll Prioritetsköer och heapar Prioritetsköer och heapar ADT prioritetskö Heapar Implementering av prioritetskö med heap Klassen PriorityQueue i java.util Programexempel LPT-algoritmen

Läs mer

Seminarium 13 Innehåll

Seminarium 13 Innehåll Seminarium 13 Innehåll Prioritetsköer och heapar Prioritetsköer ADTn Klassen PriorityQueue i java.util Implementering med lista Heapar ADTn För implementering av prioritetskö För sortering Efter seminariet

Läs mer

Föreläsning 7. Träd och binära sökträd

Föreläsning 7. Träd och binära sökträd Föreläsning 7 Träd och binära sökträd Föreläsning 7 Träd Binära träd Binärt sökträd som ADT Implementering av binärt sökträd Travestera binärt sökträd Sökning Insättning/borttagning Läsanvisningar och

Läs mer

Datastrukturer. föreläsning 10. Maps 1

Datastrukturer. föreläsning 10. Maps 1 Datastrukturer föreläsning 10 Maps 1 Minsta uppspännande träd Maps 2 Minsta uppspännande träd Uppspännande träd till graf fritt delträd innehåller alla noderna Minsta uppspännande träd (MST) är det uppspännande

Läs mer

Föreläsning 2. AVL-träd, Multi-Way -sökträd, B-träd TDDD71: DALG. Innehåll. Innehåll. 1 Binära sökträd

Föreläsning 2. AVL-träd, Multi-Way -sökträd, B-träd TDDD71: DALG. Innehåll. Innehåll. 1 Binära sökträd Föreläsning AVL-träd, Multi-Wa -sökträd, B-träd DDD7: DALG Utskriftsversion av föreläsning i Datastrukturer och algoritmer november 5 omm Färnqvist, IDA, Linköpings universitet. Innehåll Innehåll Binära

Läs mer

Interfacen Set och Map, hashtabeller

Interfacen Set och Map, hashtabeller Föreläsning 0 Innehåll Hashtabeller implementering, effektivitet Interfacen Set och Map ijava Interfacet Comparator Undervisningsmoment: föreläsning 0, övningsuppgifter 0-, lab 5 och 6 Avsnitt i läroboken:

Läs mer

13 Prioritetsköer, heapar

13 Prioritetsköer, heapar Prioritetsköer, heapar 31 13 Prioritetsköer, heapar U 101. En prioritetskö är en samling element där varje element har en prioritet (som används för att jämföra elementen med). Elementen plockas ut i prioritetsordning

Läs mer

Inlämningsuppgift och handledning

Inlämningsuppgift och handledning Inlämningsuppgift och handledning Inlämningsuppgiften redovisas i vecka 49/50. Hög tid att komma igång! Jourtider varje vecka (se http://cs.lth.se/edaa01ht/inlaemningsuppgift) Frågestunder på fredagluncher

Läs mer

Lösningar Datastrukturer TDA

Lösningar Datastrukturer TDA Lösningar Datastrukturer TDA416 2016 12 21 roblem 1. roblem 2. a) Falskt. Urvalssortering gör alltid samma mängd av jobb. b) Sant. Genom att ha en referens till sista och första elementet, kan man nå både

Läs mer

TENTAMEN: Algoritmer och datastrukturer. Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad.

TENTAMEN: Algoritmer och datastrukturer. Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad. 1 (8) TENTMEN: lgoritmer och datastrukturer Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad. örja varje uppgift på ett nytt blad. Skriv inga lösningar i tesen. Skriv ditt idnummer

Läs mer

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 9 Jonas Lindgren, Institutionen för Datavetenskap, LiU

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 9 Jonas Lindgren, Institutionen för Datavetenskap, LiU TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 9 Jonas Lindgren, Institutionen för Datavetenskap, LiU På denna föreläsning: Prioritetskö Heap Representation som

Läs mer

Föreläsning 10 Datastrukturer (DAT037)

Föreläsning 10 Datastrukturer (DAT037) Föreläsning 10 Datastrukturer (DAT037) Fredrik Lindblad 1 29 november 2017 1 Slides skapade av Nils Anders Danielsson har använts som utgångspunkt. Se http://www.cse.chalmers.se/edu/year/2015/course/dat037

Läs mer

Informationsteknologi Tom Smedsaas 19 augusti 2016

Informationsteknologi Tom Smedsaas 19 augusti 2016 Informationsteknologi Tom Smedsaas 19 augusti 016 VL-träd Definition Ett VL-träd är ett binärt sökträd där det för varje nod gäller att skillnaden i höjd mellan nodens vänster och höger subträd är högst

Läs mer

Ett generellt träd är. Antingen det tomma trädet, eller en rekursiv struktur: rot /. \ /... \ t1... tn

Ett generellt träd är. Antingen det tomma trädet, eller en rekursiv struktur: rot /. \ /... \ t1... tn Träd allmänt Träd allmänt Ett generellt träd är Antingen det tomma trädet, eller en rekursiv struktur: rot /. \ /... \ t1... tn där t1,..., tn i sin tur är träd och kallas subträd, vars rotnoder kallas

Läs mer

Föreläsning 4 Innehåll

Föreläsning 4 Innehåll Föreläsning 4 Innehåll Abstrakta datatypen lista Datastrukturen enkellänkad lista Nästlade klasser statiskt nästlade klasser inre klasser Listklasser i Java Implementera abstrakta datatyperna stack och

Läs mer

Föreläsning 6. Sökträd: AVL-träd, Multi-Way -sökträd, B-träd TDDC70/91: DALG. Innehåll. Innehåll. 1 AVL-träd

Föreläsning 6. Sökträd: AVL-träd, Multi-Way -sökträd, B-träd TDDC70/91: DALG. Innehåll. Innehåll. 1 AVL-träd Föreläsning 6 Sökträd: AVL-träd, Multi-Wa -sökträd, B-träd DDC7/9: DALG Utskriftsversion av föreläsning i Datastrukturer och algoritmer september omm Färnqvist, IDA, Linköpings universitet 6. Innehåll

Läs mer

Inlämningsuppgift och handledning. Föreläsning 11 Innehåll. Diskutera. Hashtabeller

Inlämningsuppgift och handledning. Föreläsning 11 Innehåll. Diskutera. Hashtabeller Inlämningsuppgift och handledning Föreläsning 11 Innehåll Inlämningsuppgiften redovisas i vecka 49/50. Hög tid att komma igång! Jourtider varje vecka (se http://cs.lth.se/edaa01ht/inlaemningsuppgift) Frågestunder

Läs mer

Föreläsning 10 Innehåll

Föreläsning 10 Innehåll Föreläsning 10 Innehåll Hashtabeller implementering, effektivitet Metoden hashcode i Java Abstrakta datatyperna mängd (eng. Set) och lexikon (eng. Map) Interfacen Set och Map i Java Undervisningsmoment:

Läs mer

Algoritmer och datastrukturer 2012, föreläsning 6

Algoritmer och datastrukturer 2012, föreläsning 6 lgoritmer och datastrukturer 2012, föreläsning 6 Nu lämnar vi listorna och kommer till nästa datastruktur i kursen: träd. Här nedan är ett exempel på ett träd: Båge Rot De rosa noderna är ett exempel på

Läs mer

Lösningsförslag till tentamen i EDAA01 programmeringsteknik fördjupningkurs

Lösningsförslag till tentamen i EDAA01 programmeringsteknik fördjupningkurs LUNDS TEKNISKA HÖGSKOLA 1(5) Institutionen för datavetenskap Lösningsförslag till tentamen i EDAA01 programmeringsteknik fördjupningkurs 2013 12 19 1. a) En samling element där insättning och borttagning

Läs mer

Datastrukturer, algoritmer och programkonstruktion (DVA104, HT 2014) Föreläsning 5

Datastrukturer, algoritmer och programkonstruktion (DVA104, HT 2014) Föreläsning 5 Datastrukturer, algoritmer och programkonstruktion (DVA104, HT 2014) Föreläsning 5? FORTSÄTTNING TRÄD RECAP (förra föreläsningen) RECAP (förra föreläsningen) Träd är icke-linjära datastrukturer som ofta

Läs mer

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 8 Erik Nilsson, Institutionen för Datavetenskap, LiU

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 8 Erik Nilsson, Institutionen för Datavetenskap, LiU TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 8 Erik Nilsson, Institutionen för Datavetenskap, LiU På denna föreläsning: Träd Traversering Insättning, borttagning

Läs mer

Programmering för Språkteknologer II. Innehåll. Associativa datastrukturer. Associativa datastrukturer. Binär sökning.

Programmering för Språkteknologer II. Innehåll. Associativa datastrukturer. Associativa datastrukturer. Binär sökning. Programmering för Språkteknologer II Markus Saers markus.saers@lingfil.uu.se Rum -040 stp.lingfil.uu.se/~markuss/ht0/pst Innehåll Associativa datastrukturer Hashtabeller Sökträd Implementationsdetaljer

Läs mer

Föreläsning 10 Innehåll. Diskutera. Hashtabeller. Hashfunktion. hashfunktion. hashkod (ett heltal)

Föreläsning 10 Innehåll. Diskutera. Hashtabeller. Hashfunktion. hashfunktion. hashkod (ett heltal) Föreläsning 0 Innehåll Diskutera Hashtabeller implementering, effektivitet Metoden hashcode i Java Abstrakta datatyperna mängd (eng. Set) och lexikon (eng. Map) Interfacen Set och Map ijava Undervisningsmoment:

Läs mer

Träd - C&P kap. 10 speciellt binära sökträd sid. 452

Träd - C&P kap. 10 speciellt binära sökträd sid. 452 Föreläsning 10 Träd - C&P kap. 10 speciellt binära sökträd sid. 452 Dessa bilder finns i PDF-format på http://dsv.su.se/courses/pm2/f10/index.html Jozef Swiatycki DSV Bild 1 förälder Träd allmänt Binär-länkad

Läs mer

Datastrukturer. föreläsning 10. Maps 1

Datastrukturer. föreläsning 10. Maps 1 Datastrukturer föreläsning 10 Maps 1 AVL-träd 1 2 5 2 0 4 1 8 3 2 1 11 1 7 Lecture 6 2 Insättning i AVL-träd Sätt först in det nya elementet på samma sätt som i ett vanligt BST! Det nya trädet kan bli

Läs mer

Träd Hierarkiska strukturer

Träd Hierarkiska strukturer Träd Hierarkiska strukturer a 1 a 2 a 3 a 4 a 2 a 5 a 6 a 7 Hierarki: Korta vägar till många Hur korta? Linjär lista: n 2 Träd: Antal element på avståndet m: g m a 1 a 3 a 8 a 12 m = log g n a 9 a 10 Väglängden

Läs mer

Självbalanserande AVL-träd Weiss, avsnitt 4.4

Självbalanserande AVL-träd Weiss, avsnitt 4.4 Självbalanserande AVL-träd Weiss, avsnitt 4.4 Peter Ljunglöf DAT036, Datastrukturer 30 nov 2012 1 Balanserade träd Nodbalanserat träd: skillnaden i antalet noder mellan vänster och höger delträd är högst

Läs mer

DAI2 (TIDAL) + I2 (TKIEK)

DAI2 (TIDAL) + I2 (TKIEK) TNTMN KURSNMN PROGRM: KURSTKNING XMINTOR lgoritmer och datastrukturer I2 (TIL) + I2 (TKIK) 2017/2018, lp 4 LT75 Uno Holmer TI ÖR TNTMN redagen den 1/8 2018, 08.0-12.0 HJÄLPML NSVRIG LÄRR atastrukturer

Läs mer

Lösningsförslag till tentamen Datastrukturer, DAT037,

Lösningsförslag till tentamen Datastrukturer, DAT037, Lösningsförslag till tentamen Datastrukturer, DAT037, 2018-01-10 1. Båda looparna upprepas n gånger. s.pop() tar O(1), eventuellt amorterat. t.add() tar O(log i) för i:te iterationen av första loopen.

Läs mer

Upplägg. Binära träd. Träd. Binära träd. Binära träd. Antal löv på ett träd. Binära träd (9) Binära sökträd (10.1)

Upplägg. Binära träd. Träd. Binära träd. Binära träd. Antal löv på ett träd. Binära träd (9) Binära sökträd (10.1) Binära träd Algoritmer och Datastrukturer Markus Saers markus.saers@lingfil.uu.se Upplägg Binära träd (9) Binära sökträd (0.) Träd Många botaniska termer Träd, rot, löv, gren, Trädets rot kan ha ett antal

Läs mer

Sortering. Föreläsning 12 Innehåll. Sortering i Java. Sortering i Java Exempel. Sortering

Sortering. Föreläsning 12 Innehåll. Sortering i Java. Sortering i Java Exempel. Sortering Föreläsning 12 Innehåll Sortering Sortering O(n 2 )-algoritmer: urvalsering insättningsering O(n log n)-algoritmer: Merge Quick Varför era? För att göra sökning effektivare. För att förenkla vissa algoritmer.

Läs mer

Föreläsning Datastrukturer (DAT036)

Föreläsning Datastrukturer (DAT036) Föreläsning Datastrukturer (DAT036) Nils Anders Danielsson 2013-11-27 Idag Balanserade sökträd Splayträd Skipplistor AVL-träd AVL-träd Sökträd Invariant (för varje nod): Vänster och höger delträd har samma

Läs mer

Tentamen, EDAA01 Programmeringsteknik fördjupningskurs

Tentamen, EDAA01 Programmeringsteknik fördjupningskurs LUNDS TEKNISKA HÖGSKOLA 1(3) Institutionen för datavetenskap Tentamen, EDAA01 Programmeringsteknik fördjupningskurs 2017 08 14, 8.00 13.00 Anvisningar: Denna tentamen består av 5 uppgifter. Preliminärt

Läs mer

Abstrakta datatyper. Primitiva vektorer. Deklarera en vektor

Abstrakta datatyper. Primitiva vektorer. Deklarera en vektor Abstrakta datatyper 1 Primitiva vektorer Vektorer kan skapas av primitiva datatyper, objektreferenser eller andra vektorer. Vektorer indexeras liksom i C från 0. För att referera en vektor används hakparenteser.

Läs mer

Lösningsförslag till tentamen Datastrukturer, DAT037,

Lösningsförslag till tentamen Datastrukturer, DAT037, Lösningsförslag till tentamen Datastrukturer, DAT037, 2018-04-05 1. q.dequeue() tar O(1) (eventuellt amorterat) s.contains(x) tar O(1) pq.add(x) tar O(log i) I värsta fall exekveras innehållet i if-satsen.

Läs mer

Länkade strukturer, parametriserade typer och undantag

Länkade strukturer, parametriserade typer och undantag Länkade strukturer, parametriserade typer och undantag Programmering för språkteknologer 2 Sara Stymne 2013-09-18 Idag Parametriserade typer Listor och länkade strukturer Komplexitet i länkade strukturer

Läs mer

Föreläsning 12 Innehåll

Föreläsning 12 Innehåll Föreläsning 12 Innehåll Sortering O(n 2 )-algoritmer: urvalssortering insättningssortering O(n log n)-algoritmer: Mergesort Quicksort Datavetenskap (LTH) Föreläsning 12 HT 2017 1 / 38 Sortering Varför

Läs mer

Föreläsning 13. Träd

Föreläsning 13. Träd Föreläsning 13 Träd Träd Ett träd är en datastruktur som tillåter oss att modellera sådant som vi inte kan modellera med linjära datastrukturer. Ett datavetenskapligt träd består av noder med pilar emellan.

Läs mer

Lösningsförslag till exempeltenta 1

Lösningsförslag till exempeltenta 1 Lösningsförslag till exempeltenta 1 1 1. Beskriv hur binärsökning fungerar. Beskriv dess pseudokod och förklara så klart som möjligt hur den fungerar. 2 Uppgift 1 - Lösning Huvudidé: - Titta på datan i

Läs mer

Algoritmer och datastrukturer

Algoritmer och datastrukturer Algoritmer och datastrukturer Binära sökträd Hash Tabeller Sökning Många datastukturer försöker uppnå den effektivaste sökningen I arrayer - linjer sökning, och binärt sökning när arrayen kan vara sörterad

Läs mer

Tentamen, EDAA01 Programmeringsteknik fördjupningskurs

Tentamen, EDAA01 Programmeringsteknik fördjupningskurs LUNDS TEKNISKA HÖGSKOLA 1(5) Institutionen för datavetenskap Tentamen, EDAA01 Programmeringsteknik fördjupningskurs 2014 03 10, 8.00 13.00 Anvisningar: Denna tentamen består av 5 uppgifter. Preliminärt

Läs mer

Tentamen, EDA690 Algoritmer och Datastrukturer, Helsingborg

Tentamen, EDA690 Algoritmer och Datastrukturer, Helsingborg LUNDS TEKNISKA HÖGSKOLA 1(5) Institutionen för datavetenskap Tentamen, EDA690 Algoritmer och Datastrukturer, Helsingborg 2013 12 19, 8.00 13.00 Anvisningar: Denna tentamen består av 4 uppgifter. Preliminärt

Läs mer

Tentamen Datastrukturer, DAT037 (DAT036)

Tentamen Datastrukturer, DAT037 (DAT036) Tentamen Datastrukturer, DAT037 (DAT036) Datum, tid och plats för tentamen: 2017-08-17, 8:30 12:30, M. Ansvarig: Fredrik Lindblad. Nås på tel nr. 031-772 2038. Besöker tentamenssalarna ca 9:30 och ca 11:00.

Läs mer

if (n==null) { return null; } else { return new Node(n.data, copy(n.next));

if (n==null) { return null; } else { return new Node(n.data, copy(n.next)); Inledning I bilagor finns ett antal mer eller mindre ofullständiga klasser. Klassen List innehåller några grundläggande komponenter för att skapa och hantera enkellänkade listor av heltal. Listorna hålls

Läs mer

Föreläsning 5 Innehåll

Föreläsning 5 Innehåll Föreläsning 5 Innehåll Algoritmer och effektivitet Att bedöma och jämföra effektivitet för algoritmer Begreppet tidskomplexitet Datavetenskap (LTH) Föreläsning 5 VT 2019 1 / 39 Val av algoritm och datastruktur

Läs mer

Tentamen Datastrukturer (DAT036/DAT037/DIT960)

Tentamen Datastrukturer (DAT036/DAT037/DIT960) Tentamen Datastrukturer (DAT036/DAT037/DIT960) Datum och tid för tentamen: 2016-04-07, 14:00 18:00. Författare: Nils Anders Danielsson. (Tack till Per Hallgren och Nick Smallbone för feedback.) Ansvarig:

Läs mer

Tentamen Programmeringsteknik II Inledning. Anmälningskod:

Tentamen Programmeringsteknik II Inledning. Anmälningskod: Tentamen Programmeringsteknik II 2016-01-11 Inledning I bilagan finns ett antal mer eller mindre ofullständiga klasser. Några ingår i en hierarki: List, SortedList, SplayList och ListSet enligt vidstående

Läs mer

Föreläsning 12 Innehåll

Föreläsning 12 Innehåll Föreläsning 12 Innehåll Sortering O(n 2 )-algoritmer: urvalssortering insättningssortering O(n log n)-algoritmer: Mergesort Quicksort Datavetenskap (LTH) Föreläsning 12 VT 2018 1 / 40 Sortering Varför

Läs mer

Datastrukturer. föreläsning 9. Maps 1

Datastrukturer. föreläsning 9. Maps 1 Datastrukturer föreläsning 9 Maps 1 Minsta uppspännande träd Maps 2 Minsta uppspännande träd Uppspännande träd till graf fritt delträd innehåller alla noderna Minsta uppspännande träd (MST) är det uppspännande

Läs mer

Trädstrukturer och grafer

Trädstrukturer och grafer Översikt Trädstrukturer och grafer Trädstrukturer Grundbegrepp Binära träd Sökning i träd Grafer Sökning i grafer Programmering tillämpningar och datastrukturer Varför olika datastrukturer? Olika datastrukturer

Läs mer

Lösningsförslag till tentamen Datastrukturer, DAT037 (DAT036), Tiden det tar att utföra en iteration av loopen är oberoende av värdet på

Lösningsförslag till tentamen Datastrukturer, DAT037 (DAT036), Tiden det tar att utföra en iteration av loopen är oberoende av värdet på Lösningsförslag till tentamen Datastrukturer, DAT037 (DAT036), 2017-01-11 1. Loopen upprepas n gånger. getat på en dynamisk array tar tiden O(1). member på ett AVL-träd av storlek n tar tiden O(log n).

Läs mer

Träd, binära träd och sökträd. Koffman & Wolfgang kapitel 6, avsnitt 1 4

Träd, binära träd och sökträd. Koffman & Wolfgang kapitel 6, avsnitt 1 4 Träd, binära träd och sökträd Koffman & Wolfgang kapitel 6, avsnitt 1 4 1 Träd Träd är ickelinjära och hierarkiska: i motsats till listor och fält en trädnod kan ha flera efterföljare ( barn ) men bara

Läs mer

Datastrukturer och algoritmer

Datastrukturer och algoritmer Datastrukturer och algoritmer Föreläsning 12 2 Innehåll Handledning, labbar, samarbete, etc Sökträd Sökning Delar av kapitel 15.4-15.5 i boken + OHbilderna 3 Handledning/labutlämning Ingen labhandledning

Läs mer

Tentamen TEN1 HI

Tentamen TEN1 HI Tentamen TEN1 HI1029 2015-03-17 Skrivtid: 8.15-13.00 Hjälpmedel: Referensblad (utdelas), papper (tomma), penna Logga in med tentamenskontot ni får av skrivvakten. Det kommer att ta tid att logga in ha

Läs mer

Klassen BST som definierar binära sökträd med tal som nycklar och enda data. Varje nyckel är unik dvs förekommer endast en

Klassen BST som definierar binära sökträd med tal som nycklar och enda data. Varje nyckel är unik dvs förekommer endast en Tentamen Programmeringsteknik II 2017-10-23 Skrivtid: 14:00 19:00 Inledning Skrivningen innehåller ett antal bilagor: Bilagan listsandtrees innehåller fyra klasser: Klassen List med några grundläggande

Läs mer

Tentamen i Algoritmer & Datastrukturer i Java

Tentamen i Algoritmer & Datastrukturer i Java Tentamen i Algoritmer & Datastrukturer i Java Hjälpmedel: Skrivhjälpmedel, miniräknare. Ort / Datum: Halmstad / 2008-05-27 Skrivtid: 4 timmar Kontakt person: Nicolina Månsson, tel. 035-167487 Poäng / Betyg:

Läs mer

Föreläsning 5. Träd Binära träd Binärt sökträd som ADT Implementering av binärt sökträd Travestera binärt sökträd Sökning Insättning/borttagning

Föreläsning 5. Träd Binära träd Binärt sökträd som ADT Implementering av binärt sökträd Travestera binärt sökträd Sökning Insättning/borttagning Föreläsning 5 Träd Binära träd Binärt sökträd som ADT Implementering av binärt sökträd Travestera binärt sökträd Sökning Insättning/borttagning Terminologi - träd Ett träd i datalogi består av en rotnod

Läs mer

Föreläsning 4 Datastrukturer (DAT037)

Föreläsning 4 Datastrukturer (DAT037) Föreläsning 4 Datastrukturer (DAT037) Fredrik Lindblad 1 2016-11-10 1 Slides skapade av Nils Anders Danielsson har använts som utgångspunkt Se http://wwwcsechalmersse/edu/year/2015/course/dat037 Förra

Läs mer

Programmering fortsättningskurs

Programmering fortsättningskurs Programmering fortsättningskurs Philip Larsson 2013 03 09 Innehåll 1 Träd 1 1.1 Binära träd........................................ 1 1.2 Strikt binärt träd..................................... 1 1.3 Binärt

Läs mer

F5: Debriefing OU2, repetition av listor, träd och hashtabeller. Carl Nettelblad

F5: Debriefing OU2, repetition av listor, träd och hashtabeller. Carl Nettelblad F5: Debriefing OU2, repetition av listor, träd och hashtabeller Carl Nettelblad 2017-04-24 Frågor Kommer nog inte att täcka 2 timmar Har ni frågor på OU3, något annat vi har tagit hittills på kursen, listor

Läs mer

Föreläsning Datastrukturer (DAT036)

Föreläsning Datastrukturer (DAT036) Föreläsning Datastrukturer (DAT036) Nils Anders Danielsson 2012-11-05 Repetition Förra gången: Listor, stackar, köer. Länkade listor, pekarjonglering. Idag: Cirkulära arrayer. Dynamiska arrayer. Amorterad

Läs mer

Programkonstruktion och. Datastrukturer

Programkonstruktion och. Datastrukturer Programkonstruktion och Datastrukturer Repetitionskurs, sommaren 2011 Datastrukturer (Listor, Träd, Sökträd och AVL-träd) Elias Castegren elias.castegren.7381@student.uu.se Datastrukturer Vad är en datastruktur?

Läs mer

public static void mystery(int n) { if (n > 0){ mystery(n-1); System.out.print(n * 4); mystery(n-1); } }

public static void mystery(int n) { if (n > 0){ mystery(n-1); System.out.print(n * 4); mystery(n-1); } } Rekursion 25 7 Rekursion Tema: Rekursiva algoritmer. Litteratur: Avsnitt 5.1 5.5 (7.1 7.5 i gamla upplagan) samt i bilderna från föreläsning 6. U 59. Man kan definiera potensfunktionen x n (n heltal 0)

Läs mer

Föreläsning 4 Datastrukturer (DAT037)

Föreläsning 4 Datastrukturer (DAT037) Föreläsning 4 Datastrukturer (DAT07) Fredrik Lindblad 1 november 2017 1 Slides skapade av Nils Anders Danielsson har använts som utgångspunkt Se http://wwwcsechalmersse/edu/year/2015/course/dat07 1 Innehåll

Läs mer

Dugga Datastrukturer (DAT036)

Dugga Datastrukturer (DAT036) Dugga Datastrukturer (DAT036) Duggans datum: 2012-11-21. Författare: Nils Anders Danielsson. För att en uppgift ska räknas som löst så måste en i princip helt korrekt lösning lämnas in. Enstaka mindre

Läs mer

BINÄRA TRÄD. (X = pekarvärdet NULL): struct int_bt_node *pivot, *ny; X X X 12 X X 12 X X -3 X X

BINÄRA TRÄD. (X = pekarvärdet NULL): struct int_bt_node *pivot, *ny; X X X 12 X X 12 X X -3 X X Algoritmer och Datastrukturer Kary FRÄMLING/Göran PULKKIS (v23) Kap. 7, Sid 1 BINÄRA TRÄD Träd används för att representera olika slags hierarkier som ordnats på något sätt. Den mest använda trädstrukturen

Läs mer

Föreläsning 3 Datastrukturer (DAT037)

Föreläsning 3 Datastrukturer (DAT037) Föreläsning 3 Datastrukturer (DAT037) Fredrik Lindblad 1 2016-11-07 1 Slides skapade av Nils Anders Danielsson har använts som utgångspunkt Se http://wwwcsechalmersse/edu/year/2015/course/dat037 Förra

Läs mer

Linjärt minne. Sammanhängande minne är ej flexibelt. Effektivt

Linjärt minne. Sammanhängande minne är ej flexibelt. Effektivt Binära träd (forts) Ett binärt träd kan lagras i ett enda sammanhängande minne Roten har index 1 Vänster barn till nod i har index 2*i Höger barn till nod i har index 2*i + 1 Föräldern till nod i har index

Läs mer

Inom datalogin brukar man använda träd för att beskriva vissa typer av problem. Om man begränsar sig till träd där varje nod förgrenar sig högst två

Inom datalogin brukar man använda träd för att beskriva vissa typer av problem. Om man begränsar sig till träd där varje nod förgrenar sig högst två Binära träd Inom datalogin brukar man använda träd för att beskriva vissa typer av problem. Om man begränsar sig till träd där varje nod förgrenar sig högst två gånger, talar man om binära träd. Sådana

Läs mer

TENTAMEN: Algoritmer och datastrukturer. Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad.

TENTAMEN: Algoritmer och datastrukturer. Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad. 1 (7) TENTAMEN: Algoritmer och datastrukturer Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad. Börja varje uppgift på ett nytt blad. Skriv ditt idnummer på varje blad (så att vi

Läs mer

Tentamen'('Datastrukturer,'algoritmer'och'programkonstruktion.'

Tentamen'('Datastrukturer,'algoritmer'och'programkonstruktion.' Tentamen'('Datastrukturer,'algoritmer'och'programkonstruktion.' Skrivtid: 08.30 13.30 Hjälpmedel: Inga Lärare: Betygsgränser DVA104' Akademin)för)innovation,)design)och)teknik) Onsdag)2014:01:15) Caroline

Läs mer

Tentamen i Algoritmer & Datastrukturer i Java

Tentamen i Algoritmer & Datastrukturer i Java Tentamen i Algoritmer & Datastrukturer i Java Hjälpmedel: Skrivhjälpmedel, miniräknare. Ort / Datum: Halmstad / 2010-03-16 Skrivtid: 4 timmar Kontaktperson: Nicolina Månsson Poäng / Betyg: Max 44 poäng

Läs mer

TENTAMEN: Algoritmer och datastrukturer. Läs detta!

TENTAMEN: Algoritmer och datastrukturer. Läs detta! (6) TENTAMEN: Algoritmer och datastrukturer Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad. Börja varje uppgift på ett nytt blad. Skriv ditt idnummer på varje blad (så att vi inte

Läs mer