Träd Hierarkiska strukturer



Relevanta dokument
Datastrukturer. Föreläsning 5. Maps 1

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

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

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

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

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

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)

Seminarium 13 Innehåll

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

Föreläsning 9 Innehåll

Abstrakta datatyper. Primitiva vektorer. Deklarera en vektor

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

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

Föreläsning 13 Innehåll

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

Algoritmer och datastrukturer 2012, föreläsning 6

Ännu mera träd: 2-3-träd, B-träd, rödsvarta träd, träd Weiss, avsnitt 4.7, 11.5, 12.2, etc.

Datastrukturer. föreläsning 10. Maps 1

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

TDDI16 Datastrukturer och algoritmer. Prioritetsköer, heapar, Union/Find

Föreläsning 9 Datastrukturer (DAT037)

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 8 Erik Nilsson, Institutionen för Datavetenskap, LiU

Föreläsning 4 Datastrukturer (DAT037)

Föreläsning Datastrukturer (DAT036)

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

Föreläsning Datastrukturer (DAT036)

Innehåll. Föreläsning 12. Binärt sökträd. Binära sökträd. Flervägs sökträd. Balanserade binära sökträd. Sökträd Sökning. Sökning och Sökträ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å

Föreläsning 4 Datastrukturer (DAT037)

Programmering i C++ EDA623 Dynamiska datastrukturer. EDA623 (Föreläsning 11) HT / 31

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

Datastrukturer. föreläsning 10. Maps 1

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

Lösningar Datastrukturer TDA

Tentamen kl Uppgift 4. Uppgift 5

Trädstrukturer och grafer

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

Fredag 10 juni 2016 kl 8 12

Föreläsning 9 Innehåll

Föreläsning Datastrukturer (DAT036)

13 Prioritetsköer, heapar

Vad har vi pratat om i kursen?

Programmering i C++ EDAF30 Dynamiska datastrukturer. EDAF30 (Föreläsning 11) HT / 34

Informationsteknologi Tom Smedsaas 19 augusti 2016

Träd. Rot. Förgrening. Löv

Sökning. Översikt. Binärt sökträd. Linjär sökning. Binär sökning. Sorterad array. Linjär sökning. Binär sökning Hashtabeller

Algoritmer och datastrukturer 2012, fo rela sning 8

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

Tabeller. Programkonstruktion. Moment 8 Om abstrakta datatyper och binära sökträd. Implementering av tabellen. Operationer på tabellen

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

Datastrukturer. föreläsning 9. Maps 1

3. Toppkvinnor på hög Låt lådan och de två kvinnornas famnar utgöra stackarna L, K1 respektive K2. Från början finns alla kort i L.

Föreläsning 13. Träd

Programmeringsmetodik DV1 Programkonstruktion 1. Moment 8 Om abstrakta datatyper och binära sökträd

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

DAI2 (TIDAL) + I2 (TKIEK)

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

Tentamen (del 2) (4 högskolepoäng) i Programkonstruktion och datastrukturer (1DL201)

Lösningsförslag till tentamen Datastrukturer, DAT037,

Övningsuppgifter #11, Programkonstruktion och datastrukturer

Tentamen Datastrukturer för D2 DAT 035

Föreläsning 10 Datastrukturer (DAT037)

Föreläsning 14 Innehåll

Föreläsning 9. Sortering

Datastrukturer och algoritmer

Tentamen TEN1 HI

Föreläsning Datastrukturer (DAT036)

DD1320 Tillämpad datalogi. Lösning (skiss) till tenta 20 okt 2011

Föreläsning 3 Datastrukturer (DAT037)

Facit Tentamen TDDC kl (6)

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

Tildatenta Lösningsskiss

Tommy Färnqvist, IDA, Linköpings universitet

Datastrukturer. föreläsning 9. Maps 1

Föreläsning 10 Innehåll

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

Prov i DAT 312: Algoritmer och datastrukturer för systemvetare

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

Tabeller. Programkonstruktion. Moment 8 Om abstrakta datatyper och binära sökträd. Specifikationer för tabellfunktionerna. Operationer på tabellen

Datastrukturer och algoritmer. Föreläsning 15 Inför tentamen

Övning 2. (Länkade) Listor, noder

Programkonstruktion och. Datastrukturer

Magnus Nielsen, IDA, Linköpings universitet

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

KTH, NADA, Vahid Mosavat. 1. Flervalsfrågor (5p)

Det är principer och idéer som är viktiga. Skriv så att du övertygar rättaren om att du har förstått dessa även om detaljer kan vara felaktiga.

Datastrukturer i Haskell

Sortering. Brute-force. Sortering Ordna element enligt relation mellan nyckelvärden

Tentamen med lösningsförslag Datastrukturer för D2 DAT 035

Teoretisk del. Facit Tentamen TDDC kl (6) 1. (6p) "Snabba frågor" Alla svar motiveras väl.

Exempeltenta GruDat 2002/2003

Lösningsförslag för tentamen i Datastrukturer (DAT037) från

Tentamen Datastrukturer D DAT 035/INN960

Föreläsning 5 Datastrukturer (DAT037)

Föreläsning Datastrukturer (DAT037)

TDDC30/725G63. Objektorienterad programmering i Java, datastrukturer och algoritmer

Teoretisk del. Facit Tentamen TDDC kl (6) 1. (6p) "Snabba frågor" Alla svar motiveras väl.

DD1320 Tillämpad datalogi. Lösnings-skiss till tentamen

Transkript:

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 växer som O(log n) a 4 a 11

Vissa termer lånas från naturens träd: Rot, Löv, Grenar Rot Andra termer lånas från släktträd: Förälder, Syskon, Barn Förälder Höjd Syskon Barn Löv Binära träd Binärt träd Noderna har 0, 1 eller 2 barn Hur lagrar man träd? Listor i listor Node-instanser med länkar till barnen Länkar till förälder Förbestämda index

Sekvensiell ordning av noderna i ett binärt träd Pre-order 1. Roten 2. Vänster delträd 3. Höger delträd In-order 1. Vänster delträd 2. Roten 3. Höger delträd Post-order 1. Vänster delträd 2. Höger delträd 3. Roten In-order lista av ett träd def i n O r d e r ( t ) : i f t==none : return [ ] return i n O r d e r ( t. l e f t ) + \ [ t. elem ] + \ i n O r d e r ( t. r i g h t ) Rekursion passar mycket bra för genomgång av träd Träd med elementen ordnade All element i vänster delträd är mindre än roten All element i höger delträd är större än roten Inga Operationer på sökträd Hitta element Sätt in element Bo Lars Tag bort element Anna Erik Karin Pia In-order genomgång ger elementen i storleksordning

Hitta element Sätta in element 1. Jämför med rotens nyckel 2. Rekursion ned i rätt delträd 1. Sök var elementet borde ligga 2. Lägg till ett nytt löv Ta bort element 1. Hitta elementet 2. Tre fall: Inga barn: enkelt Ett barn: sätt barnet på nodens plats Två barn: Byt plats med nästa element, tag sedan bort från den nya platsen Abstrakt datatyp Element köas tillsammans med en prioritet (tal) Elementen hämtas ut i prioritetsordning Exempel på användning: Simulering av tidsbundna händelser Leverans av meddelanden vid rätt tid

c l a s s P r i o r i t y Q u e u e : def enqueue ( s e l f, item, p r i o r i t y ) :... def dequeue ( s e l f ) :... Komplett binärt träd Föräldrarna är alltid större än barnen def f i r s t P r i o r i t y ( s e l f ) :... Komplett binärt träd Alla nivåer i trädet är fyllda a 1 a 2 a 3 Sista nivån fylls från vänster a 4 a 5 a 6 a 7 a 8 a 9 a 10 a 11 a 12 Kompletta träd kan lagras helt utan länkar! Hitta roten: a 1 Vänster barn till a i : a 2i Höger barn till a i : a 2i+1 Föräldern till a i : a i/2

Exempel på en heap 4711 666 314 17 256 127 313 16 1 218 123 99 Operationer på en Insättning av nytt element 1. Sätt in elementet sist 2. Byt plats med föräldern vid behov 3. Upprepa Borttagning av rotelementet 1. Lyft sista elementet till roten 2. Byt plats med största barnet vid behov 3. Upprepa Hur lång tid tar heap-operationerna? Insättning av nytt element Värsta fallet: höjden av trädet Kan man sortera med hjälp av en heap? Javisst: O(log n) 1. Lägg in alla element 2. Tag ut dem i ordning Borttagning av rotelementet Värsta fallet: höjden av trädet 3. Sort O(n log n) O(log n)