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? 7 2 3 9 11 51 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? 7 2 3 9 11 51 8

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

5 Find(), Mycket kortare söktider!

6 Insert () 7 2 3 9 11 51 6

7 Insert () 7 2 3 9 11 51 6

8 Insert () 7 2 3 9 11 51 6

9 Insert () 7 2 3 9 11 51 6

10 Farliga specialfall! 7 8 13

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

12 Remove () 7 2 3 9 11 51 b) Om noden har ett barn

13 Remove () 7 2 3 9 11 51 4 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 12 816 14104 2 6 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 12 816 14104 2 6 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? 12 816 104 26 1 14 insert

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

23 Hur balanceras trädet ? 12 816 104 26 1 14 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. 4 56 576 5 6 7 2 1 11

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 102015 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