• Keine Ergebnisse gefunden

faikf

N/A
N/A
Protected

Academic year: 2022

Aktie "faikf"

Copied!
236
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

JanisVoigtländer

TehnisheUniversitätDresden

Sommersemester 2007

(2)

Problemstellung

LinearesSuhen

BinäresSuhen

Suhbäume

AVL-Bäume

(3)

Gegeben: DatenstrukturmitEinträgeneinesTypsder Form:

typedef strut Entry

{ int key;

... ontents;

} EntryTyp;

undein zu suhenderShlüssel int Value;

(4)

Gegeben: DatenstrukturmitEinträgeneinesTypsder Form:

typedef strut Entry

{ int key;

... ontents;

} EntryTyp;

undein zu suhenderShlüssel int Value;

Gesuht: EintragE der DatenstrukturmitE.key=Value

(5)

Gegeben: DatenstrukturmitEinträgeneinesTypsder Form:

typedef strut Entry

{ int key;

... ontents;

} EntryTyp;

undein zu suhenderShlüssel int Value;

Gesuht: EintragE der DatenstrukturmitE.key=Value

Konkret: wenn Datenstrukturein Feld der Form

EntryTyp F[n℄, danneinePositioni gesuht,so

dassF[i℄.key=Value

(6)

Gegeben: DatenstrukturmitEinträgeneinesTypsder Form:

typedef strut Entry

{ int key;

... ontents;

} EntryTyp;

undein zu suhenderShlüssel int Value;

Gesuht: EintragE der DatenstrukturmitE.key=Value

Konkret: wenn Datenstrukturein Feld der Form

EntryTyp F[n℄, danneinePositioni gesuht,so

dassF[i℄.key=Value

Vereinfaht:

keineontentsgespeihert, lediglihdie

Shlüsselwerte selbst

(7)

Gegeben: DatenstrukturmitEinträgeneinesTypsder Form:

typedef strut Entry

{ int key;

... ontents;

} EntryTyp;

undein zu suhenderShlüssel int Value;

Gesuht: EintragE der DatenstrukturmitE.key=Value

Konkret: wenn Datenstrukturein Feld der Form

EntryTyp F[n℄, danneinePositioni gesuht,so

dassF[i℄.key=Value

Vereinfaht:

keineontentsgespeihert, lediglihdie

Shlüsselwerte selbst

Positionnihtgefordert, lediglihSignalob oder

ob nihtgefunden

(8)

Gegeben: DatenstrukturmitEinträgeneinesTypsder Form:

typedef strut Entry

{ int key;

... ontents;

} EntryTyp;

undein zu suhenderShlüssel int Value;

Gesuht: EintragE der DatenstrukturmitE.key=Value

Konkret: wenn Datenstrukturein Feld der Form

EntryTyp F[n℄, danneinePositioni gesuht,so

dassF[i℄.key=Value

Vereinfaht:

keineontentsgespeihert, lediglihdie

Shlüsselwerte selbst

Positionnihtgefordert, lediglihSignalob oder

ob nihtgefunden

(9)

Gegeben: DatenstrukturmitEinträgeneinesTypsder Form:

typedef strut Entry

{ int key;

... ontents;

} EntryTyp;

undein zu suhenderShlüssel int Value;

Gesuht: EintragE der DatenstrukturmitE.key=Value

Konkret: wenn Datenstrukturein Feld der Form

EntryTyp F[n℄, danneinePositioni gesuht,so

dassF[i℄.key=Value

Vereinfaht:

keineontentsgespeihert, lediglihdie

Shlüsselwerte selbst

Positionnihtgefordert, lediglihSignalob oder

ob nihtgefunden

Beispiele:

12 7 9 8 4 6 + 9 7→ 1

(10)

Gegeben: DatenstrukturmitEinträgeneinesTypsder Form:

typedef strut Entry

{ int key;

... ontents;

} EntryTyp;

undein zu suhenderShlüssel int Value;

Gesuht: EintragE der DatenstrukturmitE.key=Value

Konkret: wenn Datenstrukturein Feld der Form

EntryTyp F[n℄, danneinePositioni gesuht,so

dassF[i℄.key=Value

Vereinfaht:

keineontentsgespeihert, lediglihdie

Shlüsselwerte selbst

Positionnihtgefordert, lediglihSignalob oder

ob nihtgefunden

(11)

Gegeben: DatenstrukturmitEinträgeneinesTypsder Form:

typedef strut Entry

{ int key;

... ontents;

} EntryTyp;

undein zu suhenderShlüssel int Value;

Gesuht: EintragE der DatenstrukturmitE.key=Value

Konkret: wenn Datenstrukturein Feld der Form

EntryTyp F[n℄, danneinePositioni gesuht,so

dassF[i℄.key=Value

Vereinfaht:

keineontentsgespeihert, lediglihdie

Shlüsselwerte selbst

Positionnihtgefordert, lediglihSignalob oder

ob nihtgefunden

Beispiele:

12 7 9 8 4 6 + 9 7→ 1

12 7 9 8 4 6 + 5 7→ 0

(12)

NaiveIdee: Durhsuhenvonlinks nahrehts

(13)

NaiveIdee: Durhsuhenvonlinks nahrehts

Beispiele:

12 7 9 8 4 6

9

(14)

NaiveIdee: Durhsuhenvonlinks nahrehts

Beispiele:

12 7 9 8 4 6

9

(15)

NaiveIdee: Durhsuhenvonlinks nahrehts

Beispiele:

12 7 9 8 4 6

9

(16)

NaiveIdee: Durhsuhenvonlinks nahrehts

Beispiele:

12 7 9 8 4 6

9

(17)

NaiveIdee: Durhsuhenvonlinks nahrehts

Beispiele:

12 7 9 8 4 6 9

12 7 9 8 4 6

5

(18)

NaiveIdee: Durhsuhenvonlinks nahrehts

Beispiele:

12 7 9 8 4 6 9

12 7 9 8 4 6

5

(19)

NaiveIdee: Durhsuhenvonlinks nahrehts

Beispiele:

12 7 9 8 4 6 9

12 7 9 8 4 6

5

(20)

NaiveIdee: Durhsuhenvonlinks nahrehts

Beispiele:

12 7 9 8 4 6 9

12 7 9 8 4 6

5

(21)

NaiveIdee: Durhsuhenvonlinks nahrehts

Beispiele:

12 7 9 8 4 6 9

12 7 9 8 4 6

5

(22)

NaiveIdee: Durhsuhenvonlinks nahrehts

Beispiele:

12 7 9 8 4 6 9

12 7 9 8 4 6

5

(23)

NaiveIdee: Durhsuhenvonlinks nahrehts

Beispiele:

12 7 9 8 4 6 9

12 7 9 8 4 6

5

(24)

NaiveIdee: Durhsuhenvonlinks nahrehts

Beispiele:

12 7 9 8 4 6 9

12 7 9 8 4 6

5

(25)

NaiveIdee: Durhsuhenvonlinks nahrehts

Beispiele:

12 7 9 8 4 6 9

12 7 9 8 4 6 5

InC: int i=0;

while ((i<n) && (F[i℄!=Value)) i++;

found=(i<n);

(26)

NaiveIdee: Durhsuhenvonlinks nahrehts

Beispiele:

12 7 9 8 4 6 9

12 7 9 8 4 6 5

InC: int i=0;

while ((i<n) && (F[i℄!=Value)) i++;

found=(i<n);

Komplexität: linearer Aufwand

(27)

Voraussetzung: sortiertesFeld

(28)

Voraussetzung: sortiertesFeld

Idee: Intervallshahtelung

(29)

Voraussetzung: sortiertesFeld

Idee: Intervallshahtelung

Beispiele:

2 3 5 6 8 9 11 12 14 16 17 19 20 22 23

9

(30)

Voraussetzung: sortiertesFeld

Idee: Intervallshahtelung

Beispiele:

2 3 5 6 8 9 11 12 14 16 17 19 20 22 23

9

(31)

Voraussetzung: sortiertesFeld

Idee: Intervallshahtelung

Beispiele:

2 3 5 6 8 9 11 12 14 16 17 19 20 22 23

9

(32)

Voraussetzung: sortiertesFeld

Idee: Intervallshahtelung

Beispiele:

2 3 5 6 8 9 11 12 14 16 17 19 20 22 23

9

(33)

Voraussetzung: sortiertesFeld

Idee: Intervallshahtelung

Beispiele:

2 3 5 6 8 9 11 12 14 16 17 19 20 22 23 9

2 3 5 6 8 9 11 12 14 16 17 19 20 22 23

21

(34)

Voraussetzung: sortiertesFeld

Idee: Intervallshahtelung

Beispiele:

2 3 5 6 8 9 11 12 14 16 17 19 20 22 23 9

2 3 5 6 8 9 11 12 14 16 17 19 20 22 23

21

(35)

Voraussetzung: sortiertesFeld

Idee: Intervallshahtelung

Beispiele:

2 3 5 6 8 9 11 12 14 16 17 19 20 22 23 9

2 3 5 6 8 9 11 12 14 16 17 19 20 22 23

21

(36)

Voraussetzung: sortiertesFeld

Idee: Intervallshahtelung

Beispiele:

2 3 5 6 8 9 11 12 14 16 17 19 20 22 23 9

2 3 5 6 8 9 11 12 14 16 17 19 20 22 23

21

(37)

Voraussetzung: sortiertesFeld

Idee: Intervallshahtelung

Beispiele:

2 3 5 6 8 9 11 12 14 16 17 19 20 22 23 9

2 3 5 6 8 9 11 12 14 16 17 19 20 22 23

21

(38)

Voraussetzung: sortiertesFeld

Idee: Intervallshahtelung

Beispiele:

2 3 5 6 8 9 11 12 14 16 17 19 20 22 23 9

2 3 5 6 8 9 11 12 14 16 17 19 20 22 23 21

InC: int searh(int li,int re)

{ int pos;

if (li>re) return 0;

pos=(li+re)/2;

if (F[pos℄==Value) return 1;

if (F[pos℄<Value) return searh(pos+1,re);

return searh(li,pos-1);

(39)

Voraussetzung: sortiertesFeld

Idee: Intervallshahtelung

Beispiele:

2 3 5 6 8 9 11 12 14 16 17 19 20 22 23 9

2 3 5 6 8 9 11 12 14 16 17 19 20 22 23 21

InC: int searh(int li,int re)

{ int pos;

if (li>re) return 0;

pos=(li+re)/2;

if (F[pos℄==Value) return 1;

if (F[pos℄<Value) return searh(pos+1,re);

return searh(li,pos-1);

}

found=searh(0,n-1);

Komplexität: Aufwand log

(

n

)

(40)

Voraussetzung: sortiertesFeld

Idee: Intervallshahtelung

Beispiele:

2 3 5 6 8 9 11 12 14 16 17 19 20 22 23 9

2 3 5 6 8 9 11 12 14 16 17 19 20 22 23 21

InC: int searh(int li,int re)

{ int pos;

if (li>re) return 0;

pos=(li+re)/2;

if (F[pos℄==Value) return 1;

if (F[pos℄<Value) return searh(pos+1,re);

return searh(li,pos-1);

(41)

Problem:

eziente Suhe nurin sortierterDatenstruktur

möglih

(42)

Problem:

eziente Suhe nurin sortierterDatenstruktur

möglih

Sortierenvorjedem Suhvorgang keine Option

(n

·

log

(

n

)

)

(43)

Problem:

eziente Suhe nurin sortierterDatenstruktur

möglih

Sortierenvorjedem Suhvorgang keine Option

(n

·

log

(

n

)

)

einmaligesSortierennihtgenug, falls

Datenstruktur erweiterbarseinsoll

(44)

Problem:

eziente Suhe nurin sortierterDatenstruktur

möglih

Sortierenvorjedem Suhvorgang keine Option

(n

·

log

(

n

)

)

einmaligesSortierennihtgenug, falls

Datenstruktur erweiterbarseinsoll

Lösung:

Verwendung einer sortiertenDatenstruktur,in

welheezient eingefügtwerdenkann, unter

Beibehaltungder Sortierung

(45)

Problem:

eziente Suhe nurin sortierterDatenstruktur

möglih

Sortierenvorjedem Suhvorgang keine Option

(n

·

log

(

n

)

)

einmaligesSortierennihtgenug, falls

Datenstruktur erweiterbarseinsoll

Lösung:

Verwendung einer sortiertenDatenstruktur,in

welheezient eingefügtwerdenkann, unter

Beibehaltungder Sortierung

aber: sowohl Feld alsauhverketteteListe zu

unexibel

(46)

Problem:

eziente Suhe nurin sortierterDatenstruktur

möglih

Sortierenvorjedem Suhvorgang keine Option

(n

·

log

(

n

)

)

einmaligesSortierennihtgenug, falls

Datenstruktur erweiterbarseinsoll

Lösung:

Verwendung einer sortiertenDatenstruktur,in

welheezient eingefügtwerdenkann, unter

Beibehaltungder Sortierung

aber: sowohl Feld alsauhverketteteListe zu

unexibel

stattdessen: Bäume

(47)

Denition: fürjeden Knoten:

alle Knotenin linkem Nahfolgerbaummit

kleinerer Zahlbeshriftet

alle Knotenin rehtemNahfolgerbaum mit

gröÿerer Zahlbeshriftet

(48)

Denition: fürjeden Knoten:

alle Knotenin linkem Nahfolgerbaummit

kleinerer Zahlbeshriftet

alle Knotenin rehtemNahfolgerbaum mit

gröÿerer Zahlbeshriftet

Beispiele:

7 3

1 5

4 6

17

8 19

18 20

(49)

Denition: fürjeden Knoten:

alle Knotenin linkem Nahfolgerbaummit

kleinerer Zahlbeshriftet

alle Knotenin rehtemNahfolgerbaum mit

gröÿerer Zahlbeshriftet

Beispiele:

7 3

1 5

4 6

17

8 19

18 20

7 3

1 5

4 6

17

8 18

19 20

(50)

Denition: fürjeden Knoten:

alle Knotenin linkem Nahfolgerbaummit

kleinerer Zahlbeshriftet

alle Knotenin rehtemNahfolgerbaum mit

gröÿerer Zahlbeshriftet

Beispiele:

7 3

1 5

4 6

17

8 19

18 20

7 3

1 5

4 6

18

8 19

17 20

(51)

Idee: analogzu binäremSuhen

(52)

Idee: analogzu binäremSuhen

Beispiele:

7 3

1 5

4 6

17

8 19

18 20

4

(53)

Idee: analogzu binäremSuhen

Beispiele:

7 3

1 5

4 6

17

8 19

18 20

4

(54)

Idee: analogzu binäremSuhen

Beispiele:

7 3

1 5

4 6

17

8 19

18 20

4

(55)

Idee: analogzu binäremSuhen

Beispiele:

7 3

1 5

4 6

17

8 19

18 20

4

(56)

Idee: analogzu binäremSuhen

Beispiele:

7 3

1 5

4 6

17

8 19

18 20

4

(57)

Idee: analogzu binäremSuhen

Beispiele:

7 3

1 5

4 6

17

8 19

18 20 4

7 3

1 5

4 6

17

8 19

18 20

9

(58)

Idee: analogzu binäremSuhen

Beispiele:

7 3

1 5

4 6

17

8 19

18 20 4

7 3

1 5

4 6

17

8 19

18 20

9

(59)

Idee: analogzu binäremSuhen

Beispiele:

7 3

1 5

4 6

17

8 19

18 20 4

7 3

1 5

4 6

17

8 19

18 20

9

(60)

Idee: analogzu binäremSuhen

Beispiele:

7 3

1 5

4 6

17

8 19

18 20 4

7 3

1 5

4 6

17

8 19

18 20

9

(61)

Idee: analogzu binäremSuhen

Beispiele:

7 3

1 5

4 6

17

8 19

18 20 4

7 3

1 5

4 6

17

8 19

18 20 9

Aufwand: entsprehend Entfernungder Blättervon derWurzel

(62)

typedef strut Nodeelem *Ptr;

typedef strut Nodeelem { int key;

Ptr left, right;

} Node;

int searh(Ptr t,int x)

{ if (t==NULL) return 0;

if (t->key == x) return 1;

if (t->key < x) return searh(t->right,x);

return searh(t->left,x);

}

(63)

Idee: zunähstsuhen; wennnihtvorhanden, neues Blatt

erzeugen

(64)

Idee: zunähstsuhen; wennnihtvorhanden, neues Blatt

erzeugen

Beispiel:

8 4 5 10 2 9 6 12

(65)

Idee: zunähstsuhen; wennnihtvorhanden, neues Blatt

erzeugen

Beispiel:

4 5 10 2 9 6 12

8

(66)

Idee: zunähstsuhen; wennnihtvorhanden, neues Blatt

erzeugen

Beispiel:

5 10 2 9 6 12 8

4

(67)

Idee: zunähstsuhen; wennnihtvorhanden, neues Blatt

erzeugen

Beispiel:

5 10 2 9 6 12 8

4

(68)

Idee: zunähstsuhen; wennnihtvorhanden, neues Blatt

erzeugen

Beispiel:

10 2 9 6 12 8 4

5

(69)

Idee: zunähstsuhen; wennnihtvorhanden, neues Blatt

erzeugen

Beispiel:

2 9 6 12 8 4

5

10

(70)

Idee: zunähstsuhen; wennnihtvorhanden, neues Blatt

erzeugen

Beispiel:

2 9 6 12 8 4

5

10

(71)

Idee: zunähstsuhen; wennnihtvorhanden, neues Blatt

erzeugen

Beispiel:

9 6 12

8 4

2 5

10

(72)

Idee: zunähstsuhen; wennnihtvorhanden, neues Blatt

erzeugen

Beispiel:

9 6 12

8 4

2 5

10

(73)

Idee: zunähstsuhen; wennnihtvorhanden, neues Blatt

erzeugen

Beispiel:

6 12

8 4

2 5

10

9

(74)

Idee: zunähstsuhen; wennnihtvorhanden, neues Blatt

erzeugen

Beispiel:

6 12

8 4

2 5

10

9

(75)

Idee: zunähstsuhen; wennnihtvorhanden, neues Blatt

erzeugen

Beispiel:

6 12

8 4

2 5

10

9

(76)

Idee: zunähstsuhen; wennnihtvorhanden, neues Blatt

erzeugen

Beispiel:

12

8 4

2 5

6

10

9

(77)

Idee: zunähstsuhen; wennnihtvorhanden, neues Blatt

erzeugen

Beispiel:

12

8 4

2 5

6

10

9

(78)

Idee: zunähstsuhen; wennnihtvorhanden, neues Blatt

erzeugen

Beispiel:

8 4

2 5

6 10

9 12

(79)

void insert(Ptr *t,int x)

{ if (*t==NULL)

{ *t=(Ptr) mallo(sizeof(Node));

(*t)->key=x;

(*t)->left=NULL;

(*t)->right=NULL;

}

else

{ if ((*t)->key < x) insert(&((*t)->right),x);

else if ((*t)->key > x) insert(&((*t)->left),x);

}

}

(80)

Problem: Formder Bäume, undsomitAufwand beimSuhen

undEinfügen, hängt starkvon Einfügereihenfolge ab

(81)

Problem: Formder Bäume, undsomitAufwand beimSuhen

undEinfügen, hängt starkvon Einfügereihenfolge ab

Beispiel:

1 2 3 4 5 6

(82)

Problem: Formder Bäume, undsomitAufwand beimSuhen

undEinfügen, hängt starkvon Einfügereihenfolge ab

Beispiel:

2 3 4 5 6

1

(83)

Problem: Formder Bäume, undsomitAufwand beimSuhen

undEinfügen, hängt starkvon Einfügereihenfolge ab

Beispiel:

3 4 5 6 1

2

(84)

Problem: Formder Bäume, undsomitAufwand beimSuhen

undEinfügen, hängt starkvon Einfügereihenfolge ab

Beispiel:

3 4 5 6 1

2

(85)

Problem: Formder Bäume, undsomitAufwand beimSuhen

undEinfügen, hängt starkvon Einfügereihenfolge ab

Beispiel:

4 5 6 1

2

3

(86)

Problem: Formder Bäume, undsomitAufwand beimSuhen

undEinfügen, hängt starkvon Einfügereihenfolge ab

Beispiel:

4 5 6 1

2

3

(87)

Problem: Formder Bäume, undsomitAufwand beimSuhen

undEinfügen, hängt starkvon Einfügereihenfolge ab

Beispiel:

4 5 6 1

2

3

(88)

Problem: Formder Bäume, undsomitAufwand beimSuhen

undEinfügen, hängt starkvon Einfügereihenfolge ab

Beispiel:

5 6 1

2 3

4

(89)

Problem: Formder Bäume, undsomitAufwand beimSuhen

undEinfügen, hängt starkvon Einfügereihenfolge ab

Beispiel:

5 6 1

2 3

4

(90)

Problem: Formder Bäume, undsomitAufwand beimSuhen

undEinfügen, hängt starkvon Einfügereihenfolge ab

Beispiel:

5 6 1

2 3

4

(91)

Problem: Formder Bäume, undsomitAufwand beimSuhen

undEinfügen, hängt starkvon Einfügereihenfolge ab

Beispiel:

5 6 1

2 3

4

(92)

Problem: Formder Bäume, undsomitAufwand beimSuhen

undEinfügen, hängt starkvon Einfügereihenfolge ab

Beispiel:

6

1 2

3 4

5

(93)

Problem: Formder Bäume, undsomitAufwand beimSuhen

undEinfügen, hängt starkvon Einfügereihenfolge ab

Beispiel:

6

1 2

3 4

5

(94)

Problem: Formder Bäume, undsomitAufwand beimSuhen

undEinfügen, hängt starkvon Einfügereihenfolge ab

Beispiel:

6

1 2

3 4

5

(95)

Problem: Formder Bäume, undsomitAufwand beimSuhen

undEinfügen, hängt starkvon Einfügereihenfolge ab

Beispiel:

6

1 2

3 4

5

(96)

Problem: Formder Bäume, undsomitAufwand beimSuhen

undEinfügen, hängt starkvon Einfügereihenfolge ab

Beispiel:

6

1 2

3 4

5

(97)

Problem: Formder Bäume, undsomitAufwand beimSuhen

undEinfügen, hängt starkvon Einfügereihenfolge ab

Beispiel:

1 2

3 4

5

6

(98)

Problem: Formder Bäume, undsomitAufwand beimSuhen

undEinfügen, hängt starkvon Einfügereihenfolge ab

Beispiel:

1 2

3 4

5

6

(99)

Problem: Formder Bäume, undsomitAufwand beimSuhen

undEinfügen, hängt starkvon Einfügereihenfolge ab

Beispiel:

1 2

3 4

5 6

Lösung: Umbalanierenwährend des Einfügens

Ziel: sowohl Suhen alsauhEinfügen mitAufwand log

(

n

)

(100)

Denition:

Suhbaum

(101)

Denition:

Suhbaum

an jedemKnoten Höhenuntershiedzwishen

rehtem und linkem Nahfolgerbaumniht

gröÿer als Eins

(102)

Denition:

Suhbaum

an jedemKnoten Höhenuntershiedzwishen

rehtem und linkem Nahfolgerbaumniht

gröÿer als Eins

Beispiel:

5

1

3 1 4 0

7 1 6 0 12

1

11 0

(103)

Denition:

Suhbaum

an jedemKnoten Höhenuntershiedzwishen

rehtem und linkem Nahfolgerbaumniht

gröÿer als Eins

Beispiel:

5

1

3 1 4 0

7 1 6 0 12

1

11 0

Balanefaktor: Dierenz sollstets

1,0 oder 1sein

(104)

1.Einfügen: wiebei Suhbäumenalsneues Blatt an(einzig)

geeigneterStelle

(105)

1.Einfügen: wiebei Suhbäumenalsneues Blatt an(einzig)

geeigneterStelle

Beispiel:

6

8

0

5 0

3 0 7 0

12 1

9 0

(106)

1.Einfügen: wiebei Suhbäumenalsneues Blatt an(einzig)

geeigneterStelle

Beispiel:

8 0 5 0

3 0 7 0

6

0

12

1

9 0

(107)

1.Einfügen: wiebei Suhbäumenalsneues Blatt an(einzig)

geeigneterStelle

Beispiel:

8 0 5 0

3 0 7 0

6

0

12

1

9 0

2. Aktualisieren: Balanefaktoren entlangdesSuhpfadesanpassen

(108)

1.Einfügen: wiebei Suhbäumenalsneues Blatt an(einzig)

geeigneterStelle

Beispiel:

8 0 5 0

3 0 7

1

6

0

12

1

9 0

2. Aktualisieren: Balanefaktoren entlangdesSuhpfadesanpassen

(109)

1.Einfügen: wiebei Suhbäumenalsneues Blatt an(einzig)

geeigneterStelle

Beispiel:

8 0 5 1

3 0 7

1

6

0

12

1

9 0

2. Aktualisieren: Balanefaktoren entlangdesSuhpfadesanpassen

(110)

1.Einfügen: wiebei Suhbäumenalsneues Blatt an(einzig)

geeigneterStelle

Beispiel:

8

1

5

1

3 0 7 1 6 0

12

1

9 0

2. Aktualisieren: Balanefaktoren entlangdesSuhpfadesanpassen

(111)

Variante: Anpassung derBalanefaktoren nihtimmerbiszur

Wurzel nötig

(112)

Variante: Anpassung derBalanefaktoren nihtimmerbiszur

Wurzel nötig

Beispiel:

4

8 1 5 1

3 0 7

1

6

0

12

1

9 0

(113)

Variante: Anpassung derBalanefaktoren nihtimmerbiszur

Wurzel nötig

Beispiel:

8

1

5 1 3 0

4

0

7

1

6

0

12

1

9 0

(114)

Variante: Anpassung derBalanefaktoren nihtimmerbiszur

Wurzel nötig

Beispiel:

8

1

5 1 3 1

4

0

7

1

6

0

12

1

9 0

(115)

Variante: Anpassung derBalanefaktoren nihtimmerbiszur

Wurzel nötig

Beispiel:

8

1

5

0

3 1 4 0

7 1 6 0

12

1

9 0

(116)

Variante: Anpassung derBalanefaktoren nihtimmerbiszur

Wurzel nötig

Beispiel:

8

1

5

0

3 1 4 0

7 1 6 0

12

1

9 0

Problem: Balanefaktorenkönnen denBereih

1, 0,1

verlassen

(117)

Variante: Anpassung derBalanefaktoren nihtimmerbiszur

Wurzel nötig

Beispiel:

8

1

5

0

3 1 4 0

7 1 6 0

12

1

9 0

Problem: Balanefaktorenkönnen denBereih

1, 0,1

verlassen

Lösung: Rotationen

(118)

Beispiel:

1 2 3 4 5 6

(119)

Beispiel:

2 3 4 5 6

1 0

(120)

Beispiel:

3 4 5 6 1 0

2 0

(121)

Beispiel:

3 4 5 6 1 1

2 0

(122)

Beispiel:

4 5 6 1

1

2 0

3 0

(123)

Beispiel:

4 5 6 1

1

2 1

3 0

(124)

Beispiel:

4 5 6 1

2

2 1

3 0

(125)

Beispiel:

4 5 6 1

2

2 1

3 0

(126)

Beispiel:

4 5 6 2 0

1 0 3 0

(127)

Beispiel:

5 6 2

0

1 0 3 0

4 0

(128)

Beispiel:

5 6 2

0

1 0 3 1

4 0

(129)

Beispiel:

5 6 2

1

1 0 3 1

4 0

(130)

Beispiel:

6

2

1

1 0 3 1

4 0

5 0

(131)

Beispiel:

6

2

1

1 0 3 1

4 1

5 0

(132)

Beispiel:

6

2

1

1 0 3 2

4 1

5 0

(133)

Beispiel:

6

2

1

1 0 3 2

4 1

5 0

(134)

Beispiel:

6

2

1

1 0 4 0

3 0 5 0

(135)

Beispiel:

2

1

1 0 4 0

3 0 5 0

6 0

(136)

Beispiel:

2

1

1 0 4 0

3 0 5 1

6 0

(137)

Beispiel:

2

1

1 0 4 1

3 0 5 1

6 0

(138)

Beispiel:

2

2

1 0 4 1

3 0 5 1

6 0

(139)

Beispiel:

2 2 1

0

4

1

3 0 5 1

6 0

(140)

Beispiel:

4 0 2

0

1 0 3 0

5

1

6 0

(141)

Problem: einfaheRotationnihtimmerausreihend

(142)

Problem: einfaheRotationnihtimmerausreihend

Beispiel:

9

1

4 0 2 0

1 0 3 0

7 0 5 0

6

0

8 0

11 0

10 0 12 0

(143)

Problem: einfaheRotationnihtimmerausreihend

Beispiel:

9

1

4 0 2 0

1 0 3 0

7 0 5 1

6

0

8 0

11 0

10 0 12 0

(144)

Problem: einfaheRotationnihtimmerausreihend

Beispiel:

9

1

4 0 2 0

1 0 3 0

7

1

5 1 6

0

8 0

11 0

10 0 12 0

(145)

Problem: einfaheRotationnihtimmerausreihend

Beispiel:

9

1

4 1 2 0

1 0 3 0

7

1

5 1 6

0

8 0

11 0

10 0 12 0

(146)

Problem: einfaheRotationnihtimmerausreihend

Beispiel:

9

2

4 1 2 0

1 0 3 0

7

1

5 1 6

0

8 0

11 0

10 0 12 0

(147)

Problem: einfaheRotationnihtimmerausreihend

Beispiel:

4

2

2 0

1 0 3 0

9 1 7

1

5 1 6

0

8 0

11 0 10 0 12 0

Rotation an Wurzelführt nihtzu AVL-Baum!

(148)

Problem: einfaheRotationnihtimmerausreihend

Beispiel:

4

2

2 0

1 0 3 0

9 1 7

1

5 1 6

0

8 0

11 0 10 0 12 0

Rotation an Wurzelführt nihtzu AVL-Baum!

(149)

Beispiel:

9

1

4

0

2 0

1 0 3 0

7 0 5 0

6 0 8 0

11

0

10 0 12 0

(150)

Beispiel:

9

1

4

0

2 0

1 0 3 0

7 0 5 1

6 0 8 0

11

0

10 0 12 0

(151)

Beispiel:

9

1

4

0

2 0

1 0 3 0

7

1

5 1 6 0

8 0 11

0

10 0 12 0

(152)

Beispiel:

9

1

4

1

2 0

1 0 3 0

7

1

5 1 6 0

8 0 11

0

10 0 12 0

(153)

Beispiel:

9

2

4

1

2 0

1 0 3 0

7

1

5 1 6 0

8 0 11

0

10 0 12 0

(154)

Beispiel:

9

2

4 1 2 0

1

0

3

0

7

1

5

1

6 0 8

0

11 0

10 0 12 0

(155)

Beispiel:

9

2

7

2

4 0 2

0

1 0 3 0

5

1

6 0 8 0

11 0

10 0 12 0

(156)

Beispiel:

7 0 4

0

2 0

1 0 3 0

5 1 6 0

9

1

8 0 11 0

10 0 12 0

(157)

1. Sofern noh nihtvorhanden, fügedas neueElement alsBlatt

so ein,dassdie Suhbaumeigenshaft erfülltist,und setze

dessenBalanefaktorauf 0.

(158)

1. Sofern noh nihtvorhanden, fügedas neueElement alsBlatt

so ein,dassdie Suhbaumeigenshaft erfülltist,und setze

dessenBalanefaktorauf 0.

2. Fallsnoh nihtan derWurzel desBaumes,gehezum

Vorgängerknoten.

(159)

1. Sofern noh nihtvorhanden, fügedas neueElement alsBlatt

so ein,dassdie Suhbaumeigenshaft erfülltist,und setze

dessenBalanefaktorauf 0.

2. Fallsnoh nihtan derWurzel desBaumes,gehezum

Vorgängerknoten. Dort,falls

2.1 auslinkemNahfolgerbaumkommend:

(160)

1. Sofern noh nihtvorhanden, fügedas neueElement alsBlatt

so ein,dassdie Suhbaumeigenshaft erfülltist,und setze

dessenBalanefaktorauf 0.

2. Fallsnoh nihtan derWurzel desBaumes,gehezum

Vorgängerknoten. Dort,falls

2.1 auslinkemNahfolgerbaumkommend:

2.1.1 wennBalanefaktorgleih1,dannauf0setzenundAbbruh

(161)

1. Sofern noh nihtvorhanden, fügedas neueElement alsBlatt

so ein,dassdie Suhbaumeigenshaft erfülltist,und setze

dessenBalanefaktorauf 0.

2. Fallsnoh nihtan derWurzel desBaumes,gehezum

Vorgängerknoten. Dort,falls

2.1 auslinkemNahfolgerbaumkommend:

2.1.1 wennBalanefaktorgleih1,dannauf0setzenundAbbruh

2.1.2 wennBalanefaktorgleih0,dannauf

1setzenundzu2.

(162)

1. Sofern noh nihtvorhanden, fügedas neueElement alsBlatt

so ein,dassdie Suhbaumeigenshaft erfülltist,und setze

dessenBalanefaktorauf 0.

2. Fallsnoh nihtan derWurzel desBaumes,gehezum

Vorgängerknoten. Dort,falls

2.1 auslinkemNahfolgerbaumkommend:

2.1.1 wennBalanefaktorgleih1,dannauf0setzenundAbbruh

2.1.2 wennBalanefaktorgleih0,dannauf

1setzenundzu2.

2.1.3 wennBalanefaktorgleih

1,dannRotation(en)gemäÿ FalluntersheidungbezüglihBalanefaktoramlinken

Nahfolgerknoten...

(163)

1. Sofern noh nihtvorhanden, fügedas neueElement alsBlatt

so ein,dassdie Suhbaumeigenshaft erfülltist,und setze

dessenBalanefaktorauf 0.

2. Fallsnoh nihtan derWurzel desBaumes,gehezum

Vorgängerknoten. Dort,falls

2.1 auslinkemNahfolgerbaumkommend:

2.1.1 wennBalanefaktorgleih1,dannauf0setzenundAbbruh

2.1.2 wennBalanefaktorgleih0,dannauf

1setzenundzu2.

2.1.3 wennBalanefaktorgleih

1,dannRotation(en)gemäÿ FalluntersheidungbezüglihBalanefaktoramlinken

Nahfolgerknoten...,undAbbruh

(164)

1. Sofern noh nihtvorhanden, fügedas neueElement alsBlatt

so ein,dassdie Suhbaumeigenshaft erfülltist,und setze

dessenBalanefaktorauf 0.

2. Fallsnoh nihtan derWurzel desBaumes,gehezum

Vorgängerknoten. Dort,falls

2.1 auslinkemNahfolgerbaumkommend:

2.1.1 wennBalanefaktorgleih1,dannauf0setzenundAbbruh

2.1.2 wennBalanefaktorgleih0,dannauf

1setzenundzu2.

2.1.3 wennBalanefaktorgleih

1,dannRotation(en)gemäÿ FalluntersheidungbezüglihBalanefaktoramlinken

Nahfolgerknoten...,undAbbruh

2.2 ausrehtemNahfolgerbaumkommend:

...entsprehendumgekehrt

(165)

Denition: fürjeden Knoten:

alle Knotenin linkem Nahfolgerbaummit

kleinerer Zahlbeshriftet

alle Knotenin rehtemNahfolgerbaum mit

gröÿerer Zahlbeshriftet

(166)

Denition: fürjeden Knoten:

alle Knotenin linkem Nahfolgerbaummit

kleinerer Zahlbeshriftet

alle Knotenin rehtemNahfolgerbaum mit

gröÿerer Zahlbeshriftet

Beispiel:

7 3

1 5

4 6

17

8 19

18 20

4

(167)

Denition: fürjeden Knoten:

alle Knotenin linkem Nahfolgerbaummit

kleinerer Zahlbeshriftet

alle Knotenin rehtemNahfolgerbaum mit

gröÿerer Zahlbeshriftet

Beispiel:

7 3

1 5

4 6

17

8 19

18 20

4

(168)

Denition: fürjeden Knoten:

alle Knotenin linkem Nahfolgerbaummit

kleinerer Zahlbeshriftet

alle Knotenin rehtemNahfolgerbaum mit

gröÿerer Zahlbeshriftet

Beispiel:

7 3

1 5

4 6

17

8 19

18 20

4

(169)

Denition: fürjeden Knoten:

alle Knotenin linkem Nahfolgerbaummit

kleinerer Zahlbeshriftet

alle Knotenin rehtemNahfolgerbaum mit

gröÿerer Zahlbeshriftet

Beispiel:

7 3

1 5

4 6

17

8 19

18 20

4

(170)

Denition: fürjeden Knoten:

alle Knotenin linkem Nahfolgerbaummit

kleinerer Zahlbeshriftet

alle Knotenin rehtemNahfolgerbaum mit

gröÿerer Zahlbeshriftet

Beispiel:

7 3

1 5

4 6

17

8 19

18 20

4

(171)

Beispiel:

6 12

8 4

2 5

10

9

(172)

Beispiel:

6 12

8 4

2 5

10

9

(173)

Beispiel:

6 12

8 4

2 5

10

9

(174)

Beispiel:

12

8 4

2 5

6

10

9

(175)

Denition:

Suhbaum

an jedemKnoten Höhenuntershiedzwishen

rehtem und linkem Nahfolgerbaumniht

gröÿer als Eins

(176)

Denition:

Suhbaum

an jedemKnoten Höhenuntershiedzwishen

rehtem und linkem Nahfolgerbaumniht

gröÿer als Eins

Beispiel:

5

1

3 1 4 0

7 1 6 0 12

1

11 0

Balanefaktor: Dierenz sollstets

1,0 oder 1sein

(177)

Beispiel:

4

8

1

5 1

3 0 7

1

6 0

12 1

9 0

(178)

Beispiel:

8

1

5 1 3 0

4

0

7

1

6

0

12

1

9 0

(179)

Beispiel:

8

1

5 1 3 1

4

0

7

1

6

0

12

1

9 0

(180)

Beispiel:

8

1

5

0

3 1 4 0

7 1 6 0

12

1

9 0

(181)

Beispiel:

8

1

5

0

3 1 4 0

7 1 6 0

12

1

9 0

Problem: Balanefaktorenkönnen denBereih

1, 0,1

verlassen

Lösung: Rotationen

(182)

Beispiel:

6

2

1

1 0 4 0

3 0 5 0

(183)

Beispiel:

2

1

1 0 4 0

3 0 5 0

6 0

(184)

Beispiel:

2

1

1 0 4 0

3 0 5 1

6 0

(185)

Beispiel:

2

1

1 0 4 1

3 0 5 1

6 0

(186)

Beispiel:

2

2

1 0 4 1

3 0 5 1

6 0

(187)

Beispiel:

2 2 1

0

4

1

3 0 5 1

6 0

(188)

Beispiel:

4 0 2

0

1 0 3 0

5

1

6 0

(189)

Beispiel:

9

1

4

0

2 0

1 0 3 0

7 0 5 0

6 0 8 0

11

0

10 0 12 0

(190)

Beispiel:

9

1

4

0

2 0

1 0 3 0

7 0 5 1

6 0 8 0

11

0

10 0 12 0

(191)

Beispiel:

9

1

4

0

2 0

1 0 3 0

7

1

5 1 6 0

8 0 11

0

10 0 12 0

(192)

Beispiel:

9

1

4

1

2 0

1 0 3 0

7

1

5 1 6 0

8 0 11

0

10 0 12 0

(193)

Beispiel:

9

2

4

1

2 0

1 0 3 0

7

1

5 1 6 0

8 0 11

0

10 0 12 0

(194)

Beispiel:

9

2

4 1 2 0

1

0

3

0

7

1

5

1

6 0 8

0

11 0

10 0 12 0

(195)

Beispiel:

9

2

7

2

4 0 2

0

1 0 3 0

5

1

6 0 8 0

11 0

10 0 12 0

(196)

Beispiel:

7 0 4

0

2 0

1 0 3 0

5 1 6 0

9

1

8 0 11 0

10 0 12 0

(197)

1. Sofern noh nihtvorhanden, fügedas neueElement alsBlatt

so ein,dassdie Suhbaumeigenshaft erfülltist,und setze

dessenBalanefaktorauf 0.

(198)

1. Sofern noh nihtvorhanden, fügedas neueElement alsBlatt

so ein,dassdie Suhbaumeigenshaft erfülltist,und setze

dessenBalanefaktorauf 0.

2. Fallsnoh nihtan derWurzel desBaumes,gehezum

Vorgängerknoten.

(199)

1. Sofern noh nihtvorhanden, fügedas neueElement alsBlatt

so ein,dassdie Suhbaumeigenshaft erfülltist,und setze

dessenBalanefaktorauf 0.

2. Fallsnoh nihtan derWurzel desBaumes,gehezum

Vorgängerknoten. Dort,falls

2.1 auslinkemNahfolgerbaumkommend:

(200)

1. Sofern noh nihtvorhanden, fügedas neueElement alsBlatt

so ein,dassdie Suhbaumeigenshaft erfülltist,und setze

dessenBalanefaktorauf 0.

2. Fallsnoh nihtan derWurzel desBaumes,gehezum

Vorgängerknoten. Dort,falls

2.1 auslinkemNahfolgerbaumkommend:

2.1.1 wennBalanefaktorgleih1,dannauf0setzenundAbbruh

Referenzen

ÄHNLICHE DOKUMENTE

[r]

Jeder Autofahrer a hat sein individuelles Risikoprol, das durh den Parameter ϑ a beshrieben wird... Jeder Autofahrer a hat sein individuelles Risikoprol, das durh den Parameter ϑ

Idee: zunähst Entsheidung, ob s[0℄ und t[0℄ einander. gegenübergestellt, oder eines

Dies soll jedoh in linearisierter Form erfolgen,.. insbesondere eine Operation immer nur

alulating the root value of the tree using the value Y ϕ and the authentiation data stored in the MSS signature.. First Y ϕ is onatenated and hashed with Auth

Lösung: Es gibt keine solhe positive ganze Zahl. Beweis: Denn für jede positive ganze Zahl n beweist die Umfomung

Es gibt eine konkret berehenbare Zahl w , so dass gilt: Jede ungerade Zahl n ≥ w kann als eine Summe aus drei Primzahlen geshrieben werden. Winogradow selbst konnte keinen Wert für

Dann gibt es für einen Streifen 6 , für einen anderen Streifen 5 und für den.. dritten Streifen