Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

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.

Ähnliche Präsentationen


Präsentation zum Thema: "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."—  Präsentation transkript:

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


Herunterladen ppt "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."

Ähnliche Präsentationen


Google-Anzeigen