Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
Veröffentlicht von:Bertilda Heis Geändert vor über 10 Jahren
1
Vorbereitung: struct 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 r8 l r
2
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; }
3
b5 l r 2 l r8 l r Einfügen von 3: einf(b, bh, 3); bh? ? ? bvor = b; bvor 5 > 3, daher k=-1, b umgelegt auf 2
4
b5 l r 2 l r8 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;
5
b5 l r 2 l r8 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
6
b5 l r 2 l r8 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
7
b5 l r 2 l r8 l r Einfügen von 3: einf(b, bh, 3); bh? ? ? bvor While zu Ende, k=1 bvor r = bh
8
b5 l r 2 l r8 l r Einfügen von 3: einf(b, bh, 3); bh? ? ? bvor While zu Ende, k=1 bvor r = bh Daten setzen in bh:
9
b5 l r 2 l r8 l r Einfügen von 3: einf(b, bh, 3); bh3 l r bvor While zu Ende, k=1 bvor r = bh Daten setzen in bh:
10
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; }
11
Einfügen von 3: insert(bp, 3); b5 l r 2 l r8 l r bp 5 > 3, *bp umgelegt auf linken Zeiger bei 5
12
b 5 l r 2 l r8 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
13
b 5 l r 2 l r8 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 und lege *bp auf diesen ? ? ?
14
b 5 l r 2 l r8 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 bh und lege *bp auf bh 3 l r
15
b5 l r 2 l r8 l r Einfügen von 3: insert(bp, 3); Ergebnisbaum 3 l r
Ähnliche Präsentationen
© 2024 SlidePlayer.org Inc.
All rights reserved.