Vorbereitung:

15
Vorbereitung: ct knoten { int x; struct knoten *l, *r; } *b, *bh, **bp; b: Zeiger auf Wurzel bh: Hilfszeiger bp: Zeiger auf Zeiger auf knoten b bp 5 l r 2 l r 8 l r

description

bp. b. 5 l r. 2 l r. 8 l r. Vorbereitung:. struct knoten { int x; struct knoten *l, *r; } *b, *bh, **bp;. b: Zeiger auf Wurzel bh: Hilfszeiger bp: Zeiger auf Zeiger auf knoten. - PowerPoint PPT Presentation

Transcript of Vorbereitung:

Page 1: Vorbereitung:

Vorbereitung:

struct knoten { int x; struct knoten *l, *r; } *b, *bh, **bp;

b: Zeiger auf Wurzel

bh: Hilfszeiger

bp: Zeiger auf Zeiger auf knoten

bbp 5 l r

2 l r 8 l r

Page 2: Vorbereitung:

int einf(struct knoten *b, struct knoten *bh, int y) { struct knoten *bvor; int k; while(b) { if (b x == y) return 1; bvor = b; if (b x > y) { k = -1; b = b l;} else { k = 1; b = b r;} } if (k == -1) bvor l = bh; else bvor r = bh; bh x = y; bh l=0; bh r=0; return 0; }

Page 3: Vorbereitung:

b 5 l r

2 l r 8 l r

Einfügen von 3:

einf(b, bh, 3);

bh ? ? ?

bvor = b;

bvor

5 > 3, daher k=-1, b umgelegt auf 2

Page 4: Vorbereitung:

b 5 l r

2 l r 8 l r

Einfügen von 3:

einf(b, bh, 3);

bh ? ? ?

bvor = b;

bvor

5 > 3, daher k=-1, b umgelegt auf 2

bvor = b;

Page 5: Vorbereitung:

b 5 l r

2 l r 8 l r

Einfügen von 3:

einf(b, bh, 3);

bh ? ? ?

bvor = b;

bvor

5 > 3, daher k=-1, b umgelegt auf 2

bvor = b;

2 < 3, daher k=1, b umgelegt auf NULL

Page 6: Vorbereitung:

b 5 l r

2 l r 8 l r

Einfügen von 3:

einf(b, bh, 3);

bh ? ? ?

bvor = b;

bvor

5 > 3, daher k=-1, b umgelegt auf 2

bvor = b;

2 < 3, daher k=1, b umgelegt auf NULL

While zu Ende

Page 7: Vorbereitung:

b 5 l r

2 l r 8 l r

Einfügen von 3:

einf(b, bh, 3);

bh ? ? ?

bvor

While zu Ende, k=1

bvor r = bh

Page 8: Vorbereitung:

b 5 l r

2 l r 8 l r

Einfügen von 3:

einf(b, bh, 3);

bh ? ? ?

bvor

While zu Ende, k=1

bvor r = bh

Daten setzen in bh:

Page 9: Vorbereitung:

b 5 l r

2 l r 8 l r

Einfügen von 3:

einf(b, bh, 3);

bh 3 l r

bvor

While zu Ende, k=1

bvor r = bh

Daten setzen in bh:

Page 10: Vorbereitung:

int insert(struct knoten **bp, int y) { while(*bp) { if ((*bp) x == y) return 1; if ((*bp) x > y) bp = &( ( *bp ) l ); else bp = &( ( *bp) r ); } *bp = (struct knoten *)malloc(sizeof(struct knoten)); if (*bp == 0) return 2; (*bp) x = y; (*bp) l = 0; (*bp) r = 0; return 0; }

Page 11: Vorbereitung:

Einfügen von 3:

insert(bp, 3);

b 5 l r

2 l r 8 l r

bp 5 > 3, *bp umgelegt auf linken Zeiger bei 5

Page 12: Vorbereitung:

b 5 l r

2 l r 8 l r

Einfügen von 3:

insert(bp, 3);

bp 5 > 3, *bp umgelegt auf linken Zeiger bei 5

2 < 3, *bp umgelegt auf rechten Zeiger bei 2

Page 13: Vorbereitung:

b 5 l r

2 l r 8 l r

Einfügen von 3:

insert(bp, 3);

bp 5 > 3, *bp umgelegt auf linken Zeiger bei 5

2 < 3, *bp umgelegt auf rechten Zeiger bei 2

*bp ist NULL, Daher wird nun eingefügt.

Schaffe neuen Knotenund lege *bp auf diesen

? ? ?

Page 14: Vorbereitung:

b 5 l r

2 l r 8 l r

Einfügen von 3:

insert(bp, 3);

bp 5 > 3, *bp umgelegt auf linken Zeiger bei 5

2 < 3, *bp umgelegt auf rechten Zeiger bei 2

*bp ist NULL, Daher wird nun eingefügt.

Schaffe neuen Knoten bhund lege *bp auf bh

3 l r

Page 15: Vorbereitung:

b 5 l r

2 l r 8 l r

Einfügen von 3:

insert(bp, 3);

Ergebnisbaum

3 l r