Algorytmy i Struktury Danych, 9. ¢wiczenia
2008-12-08
1 Plan zaj¦¢
• usuwanie z B-drzew (wg Cormena)
• przykªad na wstawianie
• dalej wzbogacanie, w tym operacje na ci¡gach liczbowych z dodawaniem warto±ci do wszystkich elementów spójnego podci¡gu
B-drzewa denicja
• ka»dy w¦zeª ma nast¦puj¡ce pola n, c[], key[],
• ka»dy w¦zeª wewn¦trzny utrzymuje n kluczy i n+1 wska¹ników do synów,
• klucze s¡ uporz¡dkowane rosn¡co,
• klucz w poddrzewie c[i] maj¡ warto±ci pochodz¡ z przedziaªu [key[i − 1], key[i]](deniujemy key[0] = −∞, key[n + 1] = ∞),
• wszystkie li±cie maj¡ le»¡ na tej samej gª¦boko±ci,
• ka»dy w¦zeª zawiera nie wi¦cej ni» 2t − 1 kluczy,
• ka»dy w¦zeª oprócz korzenia zawiera co najmniej t − 1 kluczy.
B-drzewa wstawienia
TBD
B-drzewa usuwanie
• je±li klucz k jest w w¦¹le x i x jest li±ciem, to usu« k z w¦zªa,
• je±li klucz k jest w w¦¹le wewn¦trznym x, to:
niech y1 syn x poprzedzaj¡cy k, y2 syn x wyst¦puj¡cy po k, k1 po- przednik k w drzewie, k2 nast¦pnik k w drzewie,
je±li w¦zeª y1 ma co najmniej t kluczy, to rekurencyjnie usu« k1 i zast¡p k przez k1,
w przeciwnym przypadku, je±li w¦zeª y2ma co najmniej t kluczy, to rekurencyjnie usu« k2i zast¡p k przez k2,
1
w przeciwnym przypadku, y1i y2maj¡ po t − 1 kluczy, scal w¦zeª y1, klucz k i w¦zeª y2otrzymuj¡c w¦zeª y0, usu« rekurencyjnie k z w¦zªa y.
• je±li klucz k nie wyst¦puje w w¦¹le wewn¦trznym x, to:
znajd¹ odpowiednie poddrzewo y w którym mo»e znajdowa¢ si¦ k,
je±li y ma co najmniej t kluczy, usu« rekurencyjnie k z y,
wpp., je±li y ma t − 1 kluczy, ale jeden z s¡siadów y ma t kluczy, to dodaj jeden klucz do y (jeden klucz przechodzi z x do y, jeden z brata y do x),
wpp., scal y z dowolnym bratem i usu« k z tak utworzonego w¦zªa (je-
±li x jest korzeniem, to mo»e to spowodowa¢ zmniejszenie wysoko±ci drzewa).
2 Przej±cie z 2-3-4 drzew na czerwono-czarne
• w¦zeª z jednym kluczem zamieniany jest na czarny w¦zeª,
• w¦zeª z dwoma kluczami zamieniany jest na dwa w¦zªy czarny i jego czer- wonego syna (mo»emy dowolnie wybra¢ lewy czy prawy),
• w¦zeª z trzema kluczami jest zamieniany na czarny w¦zeª z dwoma czer- wonymi synami.
3 Drzewa czerwono-czarne
Cormen, Rozdziaª 13, strony 273301.
2