Binära Sökträd, kapitel 19

Slides:



Advertisements
Liknande presentationer
Klasser och objekt.
Advertisements

Algoritmer och data strukturer -Länkade listor
Föreläsning 3 Lista Array/länkad lista Lista implementerad som länkad lista Inlämningsuppgifter.
Fortsättningskurs i Programmering lektion 6
Klassarv och inkapsling
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning 4.
Datastrukturer och algoritmer Föreläsning 11. Datastrukturer och algoritmer VT08 Innehåll  Mängd  Lexikon  Heap  Kapitel , , 14.4.
1 Sårbarhetsanalyser av vägnät Erik Jenelius Transport- och lokaliseringsanalys, KTH Referensgruppsmöte 30 november 2006.
Tar fram v ur kön v = R(true,0,Null) och q = (). d = 0 Leta sedan fram grannarna = {A, B} För granne A: newDist = 0+4 = 4. Ej besökt. q = (A(true,4,R))
ABC EFG IJK Markera noden som besökt. Grannar = {E, F, B} E ej besökt, rekursivt anrop. depthFirst(A) * Djupet först i en oriktad graf.
Föreläsning 10 Länkade lista Stack och Kö Att arbeta med listor
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Föreläsning 7 Träd.
Hashing / Hash tabeller -- Kapitel 20. Hash? Varför en annan datastruktur? Konstant tid för både insert- och find- operationer.
Träd och tillämpningar Data Structures & Problem Solving using Java -- Kapitel 19, 12.
Algoritm analys och rekursiva metoder kap 5,7
1 Föreläsning 6 Klass Object, instans av klass public/private Klassvariabler och klassmetoder.
DAV B04 - Databasteknik Indexering (kap 14).
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2004 Datastrukturer och algoritmer Föreläsning 3.
Föreläsning 11 Arrayer.
Programmering i C# 3. Klasser.
Föreläsning 4 Kö Implementerad med array Implementerad med länkad lista Djup kontra bredd Bredden först mha kö.
int res2=Math.max(tal1,tal2);
Byggnadsmekanik gk 2.1 SNITTKRAFTER
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.
1 ITK:P1 Föreläsning 7 Algoritmer och datastrukturer DSV Marie Olsson.
Vektorer (klassen Vector) Sortering
Algoritmer och datastrukturer
1 Träd nr 11 Binära träd ordnade, traversering, sökning.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Klasser -Att definiera egna klasser -Klassvariabler -Klassmetoder.
Riktade listor i C och Java Lösning till gruppövning 1.
1 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar Array API och klassen ArrayList.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Föreläsning 11 Trie, Sökning och Sökträd.
Datastrukturer och algoritmer
Logikprogrammering 21/10 Binära träd
Föreläsning 1 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
Datastrukturer och algoritmer
Prioritets Köer (Priority Queues ), Graph Data Structures & Problem Solving using Java --Kap 21,14.
Reflektioner kring OU1 Generellt sett bra kvalitet på dokumentationen! Första intryck... –Skulle du lämna in en jobbansökan med ett häftstift/gem eller.
För utveckling av verksamhet, produkter och livskvalitet. Stack och Kö - Implementering - Tilllämpningar.
Datastrukturer och algoritmer
OOP F14:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 14 Repetition Tips inför inlämningsuppgift 2.
Stack och Kö -Implementering -Tilllämpningar -- Kapitel 16, 11.
PROGRAMMERINGSTEKNIK Övningsgrupp 3 Marcus Hjelm
För utveckling av verksamhet, produkter och livskvalitet. Algoritmer och datastructurer - Sökträd, naiva och balancerade lösningar -HashTable -- Kapitel.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Föreläsning 12 Sökning och Sökträd.
ITK:P1 Föreläsning 2 Introduktion till objektorientering DSV Marie Olsson.
Länkade listor Binära träd
Föreläsning 3, Kapitel 3 Objektinteraktion - Skapa objekt som samarbetar Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David.
Träd -Allmänt om träd -Binärt träd -Filkomprimering med Huffman träd
Köer -- Kapitel 16. Principen med en kö Köer är FIFO datastrukturer  First In – First Out  enqueue() Lägg till data i kön (först)  dequeue() Hämta.
7. Delegerare och notifierare
Karl-Henrik Hagdahl, 11 november Repetition Logikprogrammering: måndag 11 november 2002.
För utveckling av verksamhet, produkter och livskvalitet. Algoritmer och datastrukturer - En annan sort tänkande, rekursiva metoder -Datastrukturen träd,
Logikprogrammering 23/10 Binära träd In- och uthantering David Hjelm.
ITM1 Kapitel 8 Datastrukturer Grundläggande datavetenskap, 4p Utgående från boken Computer Science av: J. Glenn Brookshear.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Föreläsning 9 Grafalgoritmer.
TILLÄMPAD DATALOGI (TILDA) Övningsgrupp 2 Marcus Hjelm
OOP F5:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 5 Klasser och objekt Skapa objekt - new Referenser Konstruktorer Inkapsling.
1 Objektorienterad programmering för ingenjörer, VT04 Kort repetition av C-programmering och nyttiga verktyg. Tomas Larsson B439.
Övning2 programmeringsteknik och Matlab 2D1312/ 2D1305
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning 13 Sortering.
Övning 3. Repetition Metoder class RepetitionMetoder { public static void main(String [] args) double längd = 2.0; double bredd = 1.0; double area =
TILLÄMPAD DATALOGI (TILDA) Övning 2
För utveckling av verksamhet, produkter och livskvalitet. Algoritmer och Datastrukturer -- Kap 21,14 Prioritets Köer (Priority Queues ), Graph.
För utveckling av verksamhet, produkter och livskvalitet. Algoritmer och datastrukturer Sökning, Symbol tabeller Binära sökträd.
För utveckling av verksamhet, produkter och livskvalitet. Algoritmer och datastrukturer Hash Tabeller och Graf.
För utveckling av verksamhet, produkter och livskvalitet. Algoritmer och datastructurer - En annan sort tänkande, rekursiva metoder -Datastrukturen träd.
Länkade listor á la C/C++
Föreläsning 8: Exempel och problemlösning
Föreläsning 12: Exempel och problemlösning
Presentationens avskrift:

Binära Sökträd, kapitel 19 ”Naiva” binära sökträd Balancerade binära sökträd - AVL- träd - AA- träd

Vad är en sökträd? 7 2 9 11 1 5 3 Ett binärt träd där, för vilken som hälst nod i trädet alla noder som innehåller ett värde mindre än nodens värde befinner sig i det vänsta delträdet och alla noder som innehåller ett värde som är större en nodens värde befinner sig i det högra delträdet.

Är det ett sökträd? 7 2 9 11 1 5 8 3

Operationer Find() , findMin(), findMax() Insert() Remove()

Find(), Mycket kortare söktider!

Insert () 6 7 2 9 11 1 5 3

Insert () 6 7 2 9 11 1 5 3

Insert () 6 7 2 9 11 1 5 3

Insert () 7 2 9 6 11 1 5 3

Farliga specialfall! 7 8 13

Remove () a) Om noden är löv 7 2 9 11 1 5 3

Remove () b) Om noden har ett barn 7 2 9 11 1 5 3

Remove () c) Om noden har två barn 7 2 3 9 11 1 5 3 Ersätt värdet i noden med den minsta värdet i i det högra delträdet och sedan ta bort den noden 4

Implementation, BinaryNode class BinaryNode { Comparable element; BinaryNode left; BinaryNode right; BinaryNode( Comparable data) element=data; left=right=null; } 3

BinarySearchTree class BinarySearchTree{ BinaryNode root; public BinarySearchTree() { root=null; } public void insert( Comparable x){ root = insert(x, root); }

...och BinarySearchTree generic public class BinarySearchTree <AnyType extends Comparable<? super AnyType> > { Node <AnyType> root; public BinarySearchTree() { root=null; } -public void insert -public nbrOfNodes -public remove -public find .........andra......... }

Metoden insert() ....BinaryNode insert( Comparable x, BinaryNode t){ if(t==null) t=new BinaryNode(x); else if( x.compareTo(t.element)<0) t.left=insert(x,t.left); else if (x.compareTo(t.element)>0) t.right=insert(x,t.right); else throw new DuplicateException (); return t; }

Analys av binärasökträd operationer. a) balancerad b) obalancerad Exekverings tiden beror på djupet av den sista ”behandlade” noden

Balancerade binära sökträd AVL -träd Ett balancerad träd är ett träd där för vilken som hälst nod i trädet , skillnaden mellan höjden av vänstra delträdet och högra delträdet är inte större än 1. 12 8 16 4 10 14 Hh=1 Hv=2 2 6 Hv-Hh=2.-1=1

Balancerade binära sökträd AVL -träd Ett balancerad träd är ett träd där för vilken som hälst nod i trädet , skillnaden mellan höjden av vänstra delträdet och högra delträdet är inte större än 1. 12 8 16 4 10 14 Hh=0 Hv=1 2 6 Hv-Hh=1-0=1

Är följande träd balancerad? 1 insert 12 8 16 4 10 14 2 6

Rotation mellan nod och sitt vänster barn k1 k2 k2 C k1 B A B C A

Hur balanceras trädet ? k2 12 8 16 k1 4 10 14 2 6 1

Rotation mellan nod och sitt höger barn k1 k2 k2 A k1 C A B B C

AA- träd En ny nod skapas alltid som löv och har nivå 1. En horisontal länk är en förbindelse mellan en nod och sitt barn med samma nivå. Två horisonatala länkar är inte tilllåtna då ska operationen split utföras. 1 4 5 6 2 6 5 6 7 1 1 5 7

AA-träd Ingen vänster länk tilllåts, då ska operationen skew utföras 4 5 4 5

Operationen split() är en rotation med höger barn. 15 10 15 20 10 20 A B A B

Operationen skew() är en rotation med vänster barn 10 15 10 15 A B c A B c