background image

Notatki do wyk ladu 5

24 marzec 2011

Drzewo binarne – struktura zdefiniowana na sko´

nczonym zbiorze

we

,

z l´

ow, kt´

ora

nie zawiera ˙zadnych we

,

z l´

ow, lub

sk lada sie

,

z trzech roz la

,

cznych zbior´

ow we

,

z l´

ow:

– korzenia

– drzewa binarnego zwanego lewym poddrzewem

– drzewa binarnega zwanego prawym poddrzewem

Drzewo puste (drzewo zerowe) – drzewo binarne, kt´

ore nie ma

˙zadnych we

,

z l´

ow (oznaczane jako sta la NIL)

Je˙zeli w drzewie binarnym we

,

ze l ma tylko jednego syna, to jego

po lo˙zenie ma istotne znaczenie, tj. czy jest on lewym synem,
czy te˙z prawym synem

Regularne drzewo binarne

Regularne drzewo binarne – drzewo, w kt´

orym ka˙zdy z we

,

z l´

ow

jest ba

,

z li´

sciem, ba

,

z ma stopie´

n dwa. Porza

,

dek syn´

ow we

,

z la

odpowiada ich po lo˙zeniu.

Pe lne drzewo

Pe lne drzewo rze

,

du – drzewo, w kt´

orym wszystkie li´

scie maja

,

te

,

sama

,

g le

,

boko´

c, a wszystkie we

,

z ly wewne

,

trzne maja

,

stopie´

k

Typeset by

AMS-TEX

1

background image

2

Reprezentowanie drzew ukorzenionych

za pomoca

,

struktur wska´

znikowych

We

,

z ly drzewa reprezentowane sa

,

za pomoca

,

rekord´

ow.

Ka˙zdy

we

,

ze l ma pole klucz oraz pola s lu˙za

,

ce do zapamie

,

tywania wska´

znik´

ow

do innych we

,

z l´

ow.

Drzewa binarne

W ka˙zdym we

,

´

zle drzewa binarnego pamie

,

tamy wska´

zniki do

ojca oraz lewego prawego syna w polach p, lef t, right

p[x] = N IL – jest korzeniem drzewa T

lef t[x] = N IL – we

,

ze l nie ma lewego syna

right[x] = N IL – we

,

ze l nie ma prawego syna

root[] – atrybut zawieraja

,

cy wska´

znik do korzenia

drzewa

root[] = N IL – drzewo puste

Drzewa o dowolnym stopniu rozga le

,

zie´

n

Reprezentacja

na lewo syn, na prawo brat

– root[] wskazuje na korze´

n drzewa T

– ka˙zdy we

,

ze l ma pole wskazuja

,

ce na ojca

– zamiast wska´

znik´

ow do wszystkich syn´

ow ka˙zdy

we

,

ze l ma dwa wska´

zniki:

1. lef t-child[x] - wskazuje na najbardziej lewego

syna x

background image

3

2. right-sibling[x] - wskazuje na najbli˙zszego,

znajduja

,

cego sie

,

na prawo brata we

,

z la x

– lef t-child[x] = N IL - we

,

ze l nie ma syn´

ow

– right-sibling[x] = N IL - we

,

ze l jest najbardziej

wysunie

,

tym na prawo bratem

Twierdzenie 4.

Dowolny algorytm sortuja

,

cy element´

ow za

pomoca

,

por´

owna´

n w przypadku pesymistycznym wymaga Ω(lg n)

por´

owna´

n

Sortowanie przez zliczanie

Za lo ˙zenie:

ka˙zdy z element´

ow cia

,

gu wej´

sciowego jest liczba

,

ca lkowita

,

z przedzia lu od 0 do dla pewnego ustalonego ca lkowitego k

Idea:

dla ka˙zdego elementu z cia

,

gu wej´

sciowego wyznaczamy

liczbe

,

element´

ow mniejszych od x; w ten spos´

ob otrzymujemy

dok ladna

,

pozycje

,

w cia

,

gu posortowanym

je˙zeli dozwolonych jest wie

,

cej element´

ow o tej samej warto´

sci,

to poste

,

powanie to nale˙zy zmodyfikowa´

c aby wszystkie takie

elementy nie trafia ly na te

,

sama

,

pozycje

,

dane wej´

sciowe zawarte sa

,

w tablicy A[1..n]

dane posortowane zostaja

,

umieszczone w tablicy B[1..n]

tablica C[0..k] pocza

,

tkowo wyzerowana przechowuje

tymczasowe dane pomocnicze

background image

4

Algorytm:

– dla ka˙zdego = 01, . . . , k wyznacz liczbe

,

element´

ow tablicy

ownych (C[i] = liczba element´

ow r´

ownych i)

for j

← to n

do C[A[j]]

← C[A[j]] + 1

– dla ka˙zdego = 01, . . . , k wyznacz liczbe

,

element´

ow tablicy

mniejszych be

,

z r´

ownych i

for i

← to k

do C[i]

← C[i] + C[i − 1]

– umie´

c wszystkie elementy A[j] na w la´

sciwych pozycjach

w tablicy B

for j

← n downto 1

do B[C[A[j]]]

← A[j]

C[A[j]]

← C[A[j]] − 1

Ca lkowity czas dzia lania, to

Θ(k)

Je˙zeli O(n), to czas sortowania wynosi Θ(n)