34
İkili Arama Ağaçları İkili Arama Ağaçları (Binary Search Trees) (Binary Search Trees) BST BST Ders 5 1

İkili Arama Ağaçları (Binary Search Trees) BST

  • Upload
    xanto

  • View
    136

  • Download
    2

Embed Size (px)

DESCRIPTION

İkili Arama Ağaçları (Binary Search Trees) BST. Ders 5. İkili arama ağacı özelliği. x ikili arama ağacında herhangi bir düğüm olsun. Eğer y düğümü x’in sol alt ağacında ise key[y] ≤ key[x] Eğer y düğümü x’in sağ alt ağacında ise key[y] ≥ key[x]. İkili arama ağacı özelliği. - PowerPoint PPT Presentation

Citation preview

Page 1: İkili Arama Ağaçları (Binary Search Trees) BST

İkili Arama Ağaçlarıİkili Arama Ağaçları(Binary Search Trees)(Binary Search Trees)

BSTBST

Ders 5

1

Page 2: İkili Arama Ağaçları (Binary Search Trees) BST

İkili arama ağacı özelliğiİkili arama ağacı özelliği

x ikili arama ağacında herhangi bir düğüm olsun.

– Eğer y düğümü x’in sol alt ağacında ise

key[y] ≤ key[x]

– Eğer y düğümü x’in sağ alt ağacında ise

key[y] ≥ key[x]

Page 3: İkili Arama Ağaçları (Binary Search Trees) BST

İkili arama ağacı özelliğiİkili arama ağacı özelliği

3

x ikili arama ağacında herhangi bir düğüm olsun.

Eğer y düğümü x’in sol alt ağacında ise key[y] ≤ key[x]

Eğer y düğümü x’in sağ alt ağacında ise key[y] ≥ key[x]

5

3 7

8

Kök

2 4

<5 >5

SolAASağAA

2

Kök

3

7

85

4

>2

SağAA

Page 4: İkili Arama Ağaçları (Binary Search Trees) BST

İkili Arama Ağaçları (BST)İkili Arama Ağaçları (BST)

• İki arama ağacı bağlı veri yapısı kullanılarak gerçekleştirilebilir.

• Ağaçtaki her düğüm 3 adet pointer alanına sahip bir nesnedir.

• Sol çocuk sol ile, sağ çocuk sağ ile ebeveyn ise p ile temsil edilir.

• NIL ya da NULL herhangi bir çocuk veya ebeveyn olmadığını ifade eder.

• Kök düğümü bir İAA’da p alanı NIL’e sahip tek düğümdür.

4

Page 5: İkili Arama Ağaçları (Binary Search Trees) BST

İkili Arama Ağaçlarında İşlemlerİkili Arama Ağaçlarında İşlemler

• Dolaşma (Traversal)

• Arama (Search)

• Minimum

• Maximum

• Successor

• Predessor

• Ekleme (Insertion)

• Silme (Deletion)

5

Page 6: İkili Arama Ağaçları (Binary Search Trees) BST

1-) Dolaşma (Traversal)1-) Dolaşma (Traversal)

Ağaç yapısı üzerinde herhangi bir düğüme erişme

sürecimize ağacı gezmek (traverse) denir. Bir ağacı

en çok bilinen üçdeğişik yöntemle gezebiliriz :

i) Sıralı (Inorder) ya da kök ortada

ii) Kök sonda (Postorder)

iii) Kök başta (Preorder)

6

Page 7: İkili Arama Ağaçları (Binary Search Trees) BST

Inorder-tree walkInorder-tree walk

)()(

)WALK(-TREE-INORDER 4

print 3

)WALK(-TREE-INORDER 2

NIL 1

)WALK(-TREE-INORDER

nnT

xright

xkey

xleft

x

x

thenif

7

Bu dolaşma yönteminde önce sol alt ağaç sonra alt ağacın kökü ve en sonda ise sağ alt ağaç dolaşılır.

Page 8: İkili Arama Ağaçları (Binary Search Trees) BST

Preorder-tree walkPreorder-tree walk

)()(

)WALK(-TREE-DER PREOR 4

)WALK(-TREE-DER PREOR 3

print 2

NIL 1

)WALK(-TREE-PREORDER

nnT

xright

xleft

xkey

x

x

thenif

Bu dolaşma yönteminde alt ağaçlardan önce kök dolaşılır.

8

Page 9: İkili Arama Ağaçları (Binary Search Trees) BST

PPostostorder-tree walkorder-tree walk

)()(

print 4

)WALK(-TREE-RDER POSTO 3

)WALK(-TREE-RDER POSTO 2

NIL 1

)WALK(-TREE-POSTORDER

nnT

xkey

xright

xleft

x

x

thenif

Bu dolaşma yönteminde ise alt ağaçlardan sonra kök dolaşılır.

9

Page 10: İkili Arama Ağaçları (Binary Search Trees) BST

6

3 7

2 5 8

Inorder-tree walkInorder-tree walk

)()(

)WALK(-TREE-INORDER 4

print 3

)WALK(-TREE-INORDER 2

NIL 1

)WALK(-TREE-INORDER

nnT

xright

xkey

xleft

x

x

thenif

Page 11: İkili Arama Ağaçları (Binary Search Trees) BST

2-Arama2-Arama

15

6 18

3

2 4

7 17

13

20

9

13’ü ara

11

Page 12: İkili Arama Ağaçları (Binary Search Trees) BST

),SEARCH(-TREE 5

),SEARCH(-TREE 4

3

2

or NILL 1

),SEARCH(-TREE

kxright

kxleft

xkeyk

x

xkeykeyx

kx

returnelse

returnthen

if

returnthen

if

)()( hOnT 12

2-Arama (Özyinelemeli)2-Arama (Özyinelemeli)

Page 13: İkili Arama Ağaçları (Binary Search Trees) BST

)()( hOnT

13

2-Arama (İteratif)2-Arama (İteratif)

Page 14: İkili Arama Ağaçları (Binary Search Trees) BST

3- Minimum Bulma3- Minimum Bulma

15

6 18

3

2 4

7 17

13

20

9

Minimum

14

En küçük elemanı içeren düğüm en soldaki düğümde bulunur. Kökten başlayarak devamlı sola gidilerek bulunur

Page 15: İkili Arama Ağaçları (Binary Search Trees) BST

x

xleftx

xleft

x

return

do

while

3

][ 2

NILL ][ 1

)MINIMUM(-TREE

)()( hOnT 15

3- Minimum Bulma3- Minimum Bulma

Page 16: İkili Arama Ağaçları (Binary Search Trees) BST

4- Maksimum Bulma4- Maksimum Bulma

15

6 18

3

2 4

7 17

13

20

9

Maximum

16

En büyük elemanı içeren düğüm en sağdaki düğümde bulunur. Kökten başlayarak devamlı sağa gidilerek bulunur

Page 17: İkili Arama Ağaçları (Binary Search Trees) BST

x

xrightx

xright

x

return

do

while

3

][ 2

NILL ][ 1

)MAXIMUM(-TREE

)()( hOnT 17

4- Maksimum Bulma4- Maksimum Bulma

Page 18: İkili Arama Ağaçları (Binary Search Trees) BST

5- Successor (sonra gelen en küçük)5- Successor (sonra gelen en küçük)

Bir x düğümünün successor’u key[x] değerinden büyük en

küçük değerli düğümdür.

18

Page 19: İkili Arama Ağaçları (Binary Search Trees) BST

15

6 18

3

2 4

7 17

13

20

9

15’in Successor’ı

Durum 1: x düğümünün sağ alt ağacı boş değilse 19

5- Successor (sonra gelen en küçük)5- Successor (sonra gelen en küçük)

Page 20: İkili Arama Ağaçları (Binary Search Trees) BST

15

6 18

3

2 4

7 17

13

20

9

13’ün successor’ı

Durum 2: x düğümünün sağ alt ağacı boş ise 20

5- Successor (sonra gelen en küçük)5- Successor (sonra gelen en küçük)

Page 21: İkili Arama Ağaçları (Binary Search Trees) BST

21

5- Successor (sonra gelen en küçük)5- Successor (sonra gelen en küçük)

y

ypy

yx

yrightxy

xpy

xright

xright

x

return

do

while

returnthen

if

7

][ 6

5

][ and NILL 4

][ 3

])[(MINIMUMTREE 2

NILL ][ 1

)SUCCESSOR(-TREE

15

6 18

3

2 4

7 17

13

20

9

Page 22: İkili Arama Ağaçları (Binary Search Trees) BST

6-Ekleme6-Ekleme

12

5 18

2

13 17

9 15 19

13 elemanını ekleme 22

Page 23: İkili Arama Ağaçları (Binary Search Trees) BST

][ 13

][ 12

][][ 11

empty was Tree ][ 10

NILL 9

][ 8

][ 7

][ 6

][][ 5

4

NILL 3

][ 2

NILL 1

),(INSERTTREE

zyright

zyleft

ykeyzkey

TzTroot

y

yzp

xrightx

xleftx

xkeyzkey

xy

x

Trootx

y

zT

else

then

ifelse

then

if

else

then

if

do

while

)()( hOnT

23

6-Ekleme6-Ekleme

Page 24: İkili Arama Ağaçları (Binary Search Trees) BST

6-Ekleme6-Ekleme12

5 18

2

13 17

9 15 19

24

][ 13

][ 12

][][ 11

empty was Tree ][ 10

NILL 9

][ 8

][ 7

][ 6

][][ 5

4

NILL 3

][ 2

NILL 1

),(INSERTTREE

zyright

zyleft

ykeyzkey

TzTroot

y

yzp

xrightx

xleftx

xkeyzkey

xy

x

Trootx

y

zT

else

then

ifelse

then

if

else

then

if

do

while

Page 25: İkili Arama Ağaçları (Binary Search Trees) BST

7-Silme7-Silme

15

5 16

2

18

12

23

20

13 elemanını silme (z’nin çocuğu olmadığı durum)

10 13 z

5

3

6

7

25

Page 26: İkili Arama Ağaçları (Binary Search Trees) BST

7-Silme7-Silme

15

5 16

2

18

12

23

20

10

5

3

26

6

7

13 elemanını silme (z’nin çocuğu olmadığı durum)

Page 27: İkili Arama Ağaçları (Binary Search Trees) BST

15

5 16 z

2

18

12

23

20

10 13

5

3

27

6

7

16 elemanını silme (z’nin bir çocuğu olduğu durum)

7-Silme7-Silme

Page 28: İkili Arama Ağaçları (Binary Search Trees) BST

15

5

2 12

10 13

5

318 23

20

28

6

7

16 elemanını silme (z’nin bir çocuğu olduğu durum)

7-Silme7-Silme

Page 29: İkili Arama Ağaçları (Binary Search Trees) BST

15

5 16

2

18

12

23

20

10

z 5

3

6 y

7

13

29

7-Silme7-Silme

5 elemanını silme (5’in successor’u 6)(z’nin ikiçocuğu olduğu durum)

Page 30: İkili Arama Ağaçları (Binary Search Trees) BST

15

5 16

2

18

12

23

20

10

z 5

3

6 y

7

30

13

7-Silme7-Silme

5 elemanını silme (z’nin ikiçocuğu olduğu durum)

Page 31: İkili Arama Ağaçları (Binary Search Trees) BST

15

5 16

2

18

12

23

20

10

6

3

7

31

13

7-Silme7-Silme

5 elemanını silme (z’nin ikiçocuğu olduğu durum)

Page 32: İkili Arama Ağaçları (Binary Search Trees) BST

7-Silme7-Silme

17

into data satellite s'copy 16

][][ 15

14

]][[ 13

]][[ 12

]][[ 11

][ 10

NIL][ 9

][][ 8

NIL 7

][ 6

][ 5

NIL][ 4

)SUCCESSOR(-TREE 3

2

NIL][or NIL][ 1

),(DELETETREE

return

then

if

else

then

ifelse

then

if

then

if

else

then

if

else

then

if

zy

ykeyzkey

zy

xypright

xypleft

yplefty

xTroot

yp

ypxp

x

yrightx

yleftx

yleft

zy

zy

zrightzleft

zT

)()( hOnT

32

Page 33: İkili Arama Ağaçları (Binary Search Trees) BST

33

İkili Arama ağacı Uygulamaları• İkili arama ağacı harita, sözlük gibi birçok

uygulamada kullanılır.

– İkili arama ağacı (anahtar, değer) çifti şeklinde kullanılacak sistemler için uygundur.

– Ö.g.: Şehir Bilgi Sistemi• Posta kodu veriliyor , şehir ismi döndürülüyor. (posta

kodu/ Şehir ismi)

– Ö.g.: telefon rehberi• İsim veriliyor telefon numarası veya adres

döndürülüyor. (isim, Adres/Telefon)

– Ö.g.: Sözlük• Kelime veriliyor anlamı döndürülüyor. (kelime, anlam)

Page 34: İkili Arama Ağaçları (Binary Search Trees) BST

34

İkili Arama Ağacı – Sonuç• İki arama ağaç işlemlerinin karmaşıklığı O(h)• Fakat h ağacın derinliğine bağlı.• Örnek: 1 2 3 4 5 6 sayılarını sıralı bir şekilde ekleyelim.

1

2

3

4

5

6

kök • Daha iyisi yapılabilir mi? Ağacımızı dengeli yaparsak evet?

1. AVL-ağaçları2. Splay ağaçları3. Red-Black ağaçları4. B ağaçları, B+ agaçları

• Ortaya çıkan ağaç bağlantılı listeye benzemektedir. Dolayısıyla karmaşıklık O(n) şeklinde olacaktır.