Presentation laddar. Vänta.

Presentation laddar. Vänta.

Binära Sökträd, kapitel 19

Liknande presentationer


En presentation över ämnet: "Binära Sökträd, kapitel 19"— 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 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.

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

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

5 Find(), Mycket kortare söktider!

6 Insert () 6 7 2 9 11 1 5 3

7 Insert () 6 7 2 9 11 1 5 3

8 Insert () 6 7 2 9 11 1 5 3

9 Insert () 7 2 9 6 11 1 5 3

10 Farliga specialfall! 7 8 13

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

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

13 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

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

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 <AnyType extends Comparable<? super AnyType> > { Node <AnyType> 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) balancerad b) 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. 12 8 16 4 10 14 Hh=1 Hv=2 2 6 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. 12 8 16 4 10 14 Hh=0 Hv=1 2 6 Hv-Hh=1-0=1

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

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

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

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

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. 1 4 5 6 2 6 5 6 7 1 1 5 7

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

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

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


Ladda ner ppt "Binära Sökträd, kapitel 19"

Liknande presentationer


Google-annonser