ALGORYTMY I STRUKTURY DANYCH
WYKŁAD 08 Drzewa binarnych poszukiwań Grażyna Mirkowska
PJWSTK, 2003/2004
Plan wykładu
Drzewa BST
– Wstawianie
– Koszt utworzenia drzewa
– Usuwanie elementu z drzewa BST – Sortowanie z BST
Drzewo AVL
– Rotacje
– Koszty operacji
Sprawdzian
Data 6 grudnia, sobota
Godz. 10-12
sale aula + A1 + A2
Wstawianie elementu do drzewa BST
insert : BST
insert : BST ET ET BST BST
Rozpoczynając od korzenia drzewa D przeglądamy wierzchołki tak, jak w operacji wyszukiwania: Jeśli
znajdziemy wierzchołek z etykietą e, to wynikiem operacji jest dane drzewo D. Jeśli e nie jest etykietą drzewa D, to tworzymy nowy wierzchołek z etykietą e i dowiązujemy go 1. jako lewego syna wierzchołka v takiego, że e< et(v) i LP jest puste lub
2. jako prawego syna v, gdy et(v)< e, oraz PD jest puste.
Zadanie
Zadanie Do zbioru reprezentowanego przez drzewo D dołączyć
element e, o ile nie należy on jeszcze do etykiet drzewa D.
Przykład
6 6
5
5 9 6 12
5 9
6
5 9
12
8
6
5 9
8 12
Algorytm wstawiania
{ bool := false;
x:= root ;
while not bool {
if x.et= e then bool := true else
if (e < x.et) then
if ( x.lewy <>null) then x := x.lewy else y := New node(e);
x.lewy := y;
bool := true fi
else {//analogicznie dla prawego //poddrzewa}
fi fi }}
Algorytm insert zatrzymuje się dla wszystkich danych początkowych.
Otrzymane w wyniku drzewo ma w zbiorze swoich etykiet e.
A(n) = O(lg n)
Koszt utworzenia drzewa BST
UWAGA Koszt utworzenia i struktura drzewa zależą od kolejności wkładanych elementów.
W(n) = O(n
2)
Średni koszt utworzenia drzewa BST o n wierzchołkach wynosi O(n lg n), por. uzasadnienie .
Najgorszy przypadek = wkładane elementy tworzą
ciąg uporządkowany
9 8
7
6
Koszt utworzenia c.d.
Niech wkładane do drzewa elementy będą permutacją liczb 1...n i niech prawdopodobieństwo tego, że i-tym elementem jest k będzie takie samo dla wszystkich k=1,2,...n.
i
LD LD PD PD
) 1 (
) (
1
poddrzew utworzenia
koszt n n
A
n
)) (
) 1 (
) (
) 1 (
1 ( )
(
1
i n i
i n A i
n A n
A
n
Każdy wkładany element jest porównywany z korzeniem
nA i
n n n
A
1