(A>2) {
if (2 > 1 && A[2] > A[2/21) { swap(A, 2,2/2); bubbleUp(A, 2/2);
J /* KONIEC */
4
NULL NULL
NULL NULL
6 |
2 | ||
NULL | NULL | |||
0 |
4 | ||
NULL | NULL |
NULL | NULL |
1 2 3 4 5 6 7 8
9 |~ 8 j 7
Z.Tarapala, Algorytmy i slmklury danych.
2 1 4 3 0 4
Przypomnijmy, że w drzewie częściowo uporządkowanym element maksymalny Max znajduje się ZAWSZE w korzeniu drzewa (czyli przy reprezentacji za pomocą tablicy A, znajduje się na pozycji 1, tzn. Max=A[1]).
Aby usunąć element maksymalny z takiego drzewa (stogu) postępujemy dwuetapowo:
Najpierw zamieniamy pierwszy element drzewa z ostatnim (tzn. wykonujemy swap(A, 1, n), gdzie n to rozmiar tablicy) i zmniejszamy rozmiar tablicy, tzn. n=n-1;
Przywracamy naruszoną (być może) w ten sposób własność drzewa „przebąbelkowując” w dół elementy zmodyfikowanego drzewa poczynając od korzenia;
Z-Tarapata. Algorytmy i slmklury danych, wykład nr 5 22