Presentation laddar. Vänta.

Presentation laddar. Vänta.

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.

Liknande presentationer


En presentation över ämnet: "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."— Presentationens avskrift:

1 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

2 Vad är en sökträd? 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.

3 Är det ett sökträd?

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

5 Find(), Mycket kortare söktider!

6 Insert ()

7 Insert ()

8 Insert ()

9 Insert ()

10 Farliga specialfall!

11 Remove () a) Om noden är löv

12 Remove () b) Om noden har ett barn

13 Remove () c) Om noden har två barn 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

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

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

16 ... och BinarySearchTree generic public class BinarySearchTree { Node root; public BinarySearchTree() { root=null; } -public void insert -public nbrOfNodes -public remove -public find andra }

17 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; }

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

19 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. Hh=1 Hv=2 Hv-Hh=2.-1=1

20 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. Hv=1 Hv-Hh=1-0=1 Hh=0

21 Är följande träd balancerad? insert

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

23 Hur balanceras trädet ? k2 k1

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

25 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

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

27 Operationen split() är en rotation med höger barn. A B 2010 AB

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


Ladda ner ppt "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."

Liknande presentationer


Google-annonser