yzm 2116 veri yapıları - algoritma ve programlama bilgi kaynağı | … · 2017. 3. 4. · celal...
TRANSCRIPT
![Page 1: YZM 2116 Veri Yapıları - Algoritma ve Programlama Bilgi Kaynağı | … · 2017. 3. 4. · Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları 16 İkili Ağaç (Binary Tree)](https://reader035.vdocuments.site/reader035/viewer/2022062303/5fc056420a635a024e543dc4/html5/thumbnails/1.jpg)
YZM 2116
Veri Yapıları
Yrd. Doç. Dr. Deniz KILINÇ
Celal Bayar Üniversitesi
Hasan Ferdi Turgutlu Teknoloji Fakültesi
Yazılım Mühendisliği
![Page 2: YZM 2116 Veri Yapıları - Algoritma ve Programlama Bilgi Kaynağı | … · 2017. 3. 4. · Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları 16 İkili Ağaç (Binary Tree)](https://reader035.vdocuments.site/reader035/viewer/2022062303/5fc056420a635a024e543dc4/html5/thumbnails/2.jpg)
BÖLÜM - 7
Bu bölümde,
• Ağaç (Tree) Veri Yapısı Giriş
• Ağaç VY Temel Kavramlar
• İkili Ağaç (Binary Tree)
• İkili Ağaç Özellikleri
• İkili Ağaç Gerçekleştirim
• İkili Ağaç Üzerinde Gezinme (Traverse)
• Preorder, Inorder, Postorder
• İkili Ağaç Gerçekleştirimine Dair Sorular
konusuna değinilecektir.
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
![Page 3: YZM 2116 Veri Yapıları - Algoritma ve Programlama Bilgi Kaynağı | … · 2017. 3. 4. · Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları 16 İkili Ağaç (Binary Tree)](https://reader035.vdocuments.site/reader035/viewer/2022062303/5fc056420a635a024e543dc4/html5/thumbnails/3.jpg)
3 Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
• Verilerin birbirine sanki bir ağaç yapısı oluşturuyormuş
gibi sanal olarak bağlanmasıyla elde edilen hiyerarşik
yapıya sahip veri yapısıdır.
• Aynı aile soyağacında olduğu gibi hiyerarşik bir yapısı
vardır ve orada geçen birçok kavram buradaki ağaç
veri yapısında da tanımlıdır.
• Örneğin çocuk, kardeş düğüm, aile, ata gibi birçok
kavram ağaç veri yapısında da kullanılır.
• Her biri değişik bir uygulamaya doğal çözüm olan ikili
ağaç, kodlama ağacı, sözlük ağacı, kümeleme ağacı
gibi çeşitli ağaç şekilleri vardır; üstelik uygulamaya
yönelik özel ağaç şekilleri de çıkarılabilir.
Ağaç VY Giriş
![Page 4: YZM 2116 Veri Yapıları - Algoritma ve Programlama Bilgi Kaynağı | … · 2017. 3. 4. · Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları 16 İkili Ağaç (Binary Tree)](https://reader035.vdocuments.site/reader035/viewer/2022062303/5fc056420a635a024e543dc4/html5/thumbnails/4.jpg)
4 Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
• Bağlı listeler, yığıtlar ve kuyruklar doğrusal (linear)
veri yapılarıdır.
• Ağaçlar ise doğrusal olmayan belirli niteliklere sahip
iki boyutlu veri yapılarıdır.
• Ağaçlar hiyerarşik ilişkileri göstermek için kullanılır.
• Her ağaç düğümlerden (node) ve kenarlardan (edge)
oluşur.
• Her düğüm bir nesneyi gösterir.
• Her kenar (bağlantı) iki node arasındaki ilişkiyi
gösterir.
• Arama işlemi bağlı listelere göre çok hızlı yapılır.
Ağaç VY Giriş (devam…)
![Page 5: YZM 2116 Veri Yapıları - Algoritma ve Programlama Bilgi Kaynağı | … · 2017. 3. 4. · Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları 16 İkili Ağaç (Binary Tree)](https://reader035.vdocuments.site/reader035/viewer/2022062303/5fc056420a635a024e543dc4/html5/thumbnails/5.jpg)
5 Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
Ağaç VY Giriş (devam…)
• Ağacın düğümlerindeki bilgiler sayılardan oluşmuştur. Her
düğümdeki sol ve sağ bağlar yardımı ile diğer düğümlere ulaşılır.
Sol ve sağ bağlar NULL olabilir.
• Düğüm yapıları değişik türlerde bilgiler içeren veya birden fazla bilgi
içeren ağaçlar da olabilir.
![Page 6: YZM 2116 Veri Yapıları - Algoritma ve Programlama Bilgi Kaynağı | … · 2017. 3. 4. · Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları 16 İkili Ağaç (Binary Tree)](https://reader035.vdocuments.site/reader035/viewer/2022062303/5fc056420a635a024e543dc4/html5/thumbnails/6.jpg)
6 Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
• Ağaç veri yapısı / modeli aşağıdaki yazılım
uygulamalarında kullanılırlar:
o İşletim sisteminin dosya sistemini modellemekte
o Oyunlar için farklı hamleleri ele almakta
o Ağ routing (yönlendirme) algoritmalarında
o Trie adı verilen VY ile sözlük oluşturmakta ve
dinamik yazım kontrolü gibi alanlarda
o Huffman sıkıştırma kodlamasında ve
o Derleyicilerde matematiksel ifadeleri modellemede
kullanılırlar.
Ağaç VY Kullanılan Yazılım Uygulamaları
![Page 7: YZM 2116 Veri Yapıları - Algoritma ve Programlama Bilgi Kaynağı | … · 2017. 3. 4. · Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları 16 İkili Ağaç (Binary Tree)](https://reader035.vdocuments.site/reader035/viewer/2022062303/5fc056420a635a024e543dc4/html5/thumbnails/7.jpg)
7 Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
Örnek Ağaç Yapısı – Dosya Sistemi
/yazilim
kitaplar kodlar dersler
yzm219 yzm112 ...
1.pdf 2.pdf 1.pdf
2015-2016 eski a.java b.java
yzm2116 yzm317 yzm215 ...
1.ppt 1.doc 1.Pdf
![Page 8: YZM 2116 Veri Yapıları - Algoritma ve Programlama Bilgi Kaynağı | … · 2017. 3. 4. · Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları 16 İkili Ağaç (Binary Tree)](https://reader035.vdocuments.site/reader035/viewer/2022062303/5fc056420a635a024e543dc4/html5/thumbnails/8.jpg)
8 Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
Örnek Ağaç Yapısı – Şirket Organizasyonu
![Page 9: YZM 2116 Veri Yapıları - Algoritma ve Programlama Bilgi Kaynağı | … · 2017. 3. 4. · Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları 16 İkili Ağaç (Binary Tree)](https://reader035.vdocuments.site/reader035/viewer/2022062303/5fc056420a635a024e543dc4/html5/thumbnails/9.jpg)
9 Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
Ağaç VY Temel Kavramlar
Level - Seviye
0
1
2
3
A
B C
D E F
G
Kök (root)
Yaprak
Düğüm
Aile / Ara
Düğüm
Yaprak
Düğüm
7 düğümlü ağaç
Çocuk Düğümler
• A düğümü kök olmak
üzere 7 düğümden (n)
oluşmaktadır.
• Toplam 6 kenar (n-1)
vardır.
• Sol alt ağaç, B kökü
ile başlamakta ve sağ
alt ağaç da C kökü ile
başlamaktadır.
• A’dan solda B’ye giden
ve sağda C'ye giden iki
dal (branch)
çıkmaktadır.
![Page 10: YZM 2116 Veri Yapıları - Algoritma ve Programlama Bilgi Kaynağı | … · 2017. 3. 4. · Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları 16 İkili Ağaç (Binary Tree)](https://reader035.vdocuments.site/reader035/viewer/2022062303/5fc056420a635a024e543dc4/html5/thumbnails/10.jpg)
10 Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
Ağaç VY Temel Kavramlar (devam…)
• Düğüm (Node): Ağacın her elemanına verilen isim.
• Kök (Root): Ağacın başlangıç düğümüdür.
• Çocuk (Child): Bir düğüme doğrudan bağlı olan
düğümlere o çocukları denilir.
• Kardeş Düğüm (Sibling): Aynı düğüme bağlı düğümlere
kardeş düğüm veya kısaca kardeş denir.
• Aile (Parent): Düğümlerin doğrudan bağlı oldukları
düğüm aile olarak adlandırılır; diğer bir deyişle aile,
kardeşlerin bağlı olduğu düğümdür.
• Ata (Ancestor): Aile düğümünün daha üstünde kalan
düğümlere denir.
• Torun (Dedscendant): Bir düğümün çocuğuna bağlı olan
düğümlere denir.
![Page 11: YZM 2116 Veri Yapıları - Algoritma ve Programlama Bilgi Kaynağı | … · 2017. 3. 4. · Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları 16 İkili Ağaç (Binary Tree)](https://reader035.vdocuments.site/reader035/viewer/2022062303/5fc056420a635a024e543dc4/html5/thumbnails/11.jpg)
11 Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
Ağaç VY Temel Kavramlar (devam…)
• Yaprak (Leaf): Ağacın en altında bulunan ve çocukları
olmayan düğümlerdir.
• Derece (Degree): Bir düğümden alt hiyerarşiye yapılan
bağlantıların sayısıdır; yani çocuk veya alt ağaç sayısıdır.
• Seviye (Level): Hiyerarşik sıradır (rank). Kök düğüm seviye
= 0.
• Derinlik (Depth): Bir düğümün köke olan uzaklığı
derinliktir. Kök düğüm derinlik = 0.
• Yükseklik (Height): Bir düğümün kendi silsilesinden en
uzak yaprak düğüme olan uzaklığıdır. Yaprak düğümlerin
yükseliği = 0. (Kök yüksekliği = Ağaç Yükesekliği)
• Yol (Path): Bir düğümün aşağıya doğru (çocukları üzerinden)
bir başka düğüme gidebilmek için üzerinden geçilmesi
gereken düğümlerin listesidir.
![Page 12: YZM 2116 Veri Yapıları - Algoritma ve Programlama Bilgi Kaynağı | … · 2017. 3. 4. · Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları 16 İkili Ağaç (Binary Tree)](https://reader035.vdocuments.site/reader035/viewer/2022062303/5fc056420a635a024e543dc4/html5/thumbnails/12.jpg)
12 Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
Ağaç VY Temel Kavramlar (devam…)
A
B C
D E F
G
Kök (Root) Tanım Kök B D
Çocuk/Derece 2 0 0
Kardeş 1 2 3
Seviye 0 1 2
Aile yok Kök C
Ata yok yok Kök
Yol A A, B A,C,D
Derinlik 0 1 2
Yükseklik 3 0 0
![Page 13: YZM 2116 Veri Yapıları - Algoritma ve Programlama Bilgi Kaynağı | … · 2017. 3. 4. · Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları 16 İkili Ağaç (Binary Tree)](https://reader035.vdocuments.site/reader035/viewer/2022062303/5fc056420a635a024e543dc4/html5/thumbnails/13.jpg)
13 Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
Ağaç VY Temel Kavramlar (devam…)
Düğüm sayısı:
Yükseklik:
Kök düğüm:
Yapraklar:
Seviye sayısı:
H'nin ataları:
B'nin torunları:
E'nin kardeşleri:
9
4
A
C, D, F, H, I
4
E, B, A
G, H, I
D, F
![Page 14: YZM 2116 Veri Yapıları - Algoritma ve Programlama Bilgi Kaynağı | … · 2017. 3. 4. · Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları 16 İkili Ağaç (Binary Tree)](https://reader035.vdocuments.site/reader035/viewer/2022062303/5fc056420a635a024e543dc4/html5/thumbnails/14.jpg)
14 Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
Ağaçlara Özyinelemeli Yaklaşım
• Rekürsif mantıkla bir ağaç, bir kök (root) ve alt-ağaçlar
şeklinde tanımlanır.
• 1 düğümü 2 ve 3 alt-ağaçlarından oluşur
• 2 düğümü 4,6 ve 5 (5-9-10) olmak üzere üç alt-ağaçtan
oluşur.
![Page 15: YZM 2116 Veri Yapıları - Algoritma ve Programlama Bilgi Kaynağı | … · 2017. 3. 4. · Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları 16 İkili Ağaç (Binary Tree)](https://reader035.vdocuments.site/reader035/viewer/2022062303/5fc056420a635a024e543dc4/html5/thumbnails/15.jpg)
15 Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
İkili Ağaç (Binary Tree)
![Page 16: YZM 2116 Veri Yapıları - Algoritma ve Programlama Bilgi Kaynağı | … · 2017. 3. 4. · Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları 16 İkili Ağaç (Binary Tree)](https://reader035.vdocuments.site/reader035/viewer/2022062303/5fc056420a635a024e543dc4/html5/thumbnails/16.jpg)
16 Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
İkili Ağaç (Binary Tree)
• Her düğümün en fazla iki çocuk düğüme sahip olduğu
ağaç yapısına BT denir.
• BT, bilgisayar bilimlerinde en çok kullanılan ağaç
veri yapılarından olup, sıralı olması durumunda
arama, ekleme ve silme işlemlerini çabuklaştırırlar.
• Bir BT o Boş tek bir düğümden oluşabileceği gibi,
o Sol alt ağaç ve sağ alt ağaç olmak üzere köke ait iki adet
ikili ağaçtan da oluşabilir.
• BT için gerek şart ilgili BT düğümünün en fazla iki
çocuğa (alt ağaca) sahip olabileceğidir.
![Page 17: YZM 2116 Veri Yapıları - Algoritma ve Programlama Bilgi Kaynağı | … · 2017. 3. 4. · Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları 16 İkili Ağaç (Binary Tree)](https://reader035.vdocuments.site/reader035/viewer/2022062303/5fc056420a635a024e543dc4/html5/thumbnails/17.jpg)
17 Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
İkili Ağaç (Binary Tree) (devam…)
A
C D
Z I
K
Kök
P
M Sağ alt ağaç
A
B
A
B
İki farklı ikili ağaç
![Page 18: YZM 2116 Veri Yapıları - Algoritma ve Programlama Bilgi Kaynağı | … · 2017. 3. 4. · Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları 16 İkili Ağaç (Binary Tree)](https://reader035.vdocuments.site/reader035/viewer/2022062303/5fc056420a635a024e543dc4/html5/thumbnails/18.jpg)
18 Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
Katı İkili Ağaç (Strict Binary Tree)
• Yaprak düğümler haricindeki tüm düğümler sıfır veya
iki çocuğa sahip ise katı ikili ağaç olarak adlandırılır.
Katı İkili Ağaç Katı Olmayan İkili Ağaç
![Page 19: YZM 2116 Veri Yapıları - Algoritma ve Programlama Bilgi Kaynağı | … · 2017. 3. 4. · Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları 16 İkili Ağaç (Binary Tree)](https://reader035.vdocuments.site/reader035/viewer/2022062303/5fc056420a635a024e543dc4/html5/thumbnails/19.jpg)
19 Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
Tam İkili Ağaç (Full Binary Tree)
• Her bir düğümün (i)net olarak iki çocuk düğüme
sahip olduğu ve (ii)yaprak düğümlerin aynı
seviyede olduğu iki ağaçtır.
• Her düğüm eşit şekilde sağ ve sol alt-ağaçlara
sahiptir.
![Page 20: YZM 2116 Veri Yapıları - Algoritma ve Programlama Bilgi Kaynağı | … · 2017. 3. 4. · Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları 16 İkili Ağaç (Binary Tree)](https://reader035.vdocuments.site/reader035/viewer/2022062303/5fc056420a635a024e543dc4/html5/thumbnails/20.jpg)
20 Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
Eksiksiz İkili Ağaç (Complete Binary Tree)
• Son seviye dışındaki tüm seviyelerin tam (full)
olduğu ikili ağaç türüdür.
• Düğümleri sol taraftan (düğüme göre) doldurulur.
• Yeni bir derinliğe soldan sağa doğru ekleme
başlanır.
![Page 21: YZM 2116 Veri Yapıları - Algoritma ve Programlama Bilgi Kaynağı | … · 2017. 3. 4. · Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları 16 İkili Ağaç (Binary Tree)](https://reader035.vdocuments.site/reader035/viewer/2022062303/5fc056420a635a024e543dc4/html5/thumbnails/21.jpg)
21 Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
Eksiksiz İkili Ağaç (Complete Binary Tree)
• Aşağıdaki örnekler, eksiksiz ikili ağaç kriterlerine
uyuyor mu?
![Page 22: YZM 2116 Veri Yapıları - Algoritma ve Programlama Bilgi Kaynağı | … · 2017. 3. 4. · Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları 16 İkili Ağaç (Binary Tree)](https://reader035.vdocuments.site/reader035/viewer/2022062303/5fc056420a635a024e543dc4/html5/thumbnails/22.jpg)
22 Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
İkili Ağaç Özellikleri – Özellik 1
• Her k seviyesinde, maksimum düğüm sayısı 2k dır.
• Kök düğümde k=0 olduğu için düğüm sayısı 1 olurken,
• k=2 için maksimum düğüm sayısı 4 olur.
![Page 23: YZM 2116 Veri Yapıları - Algoritma ve Programlama Bilgi Kaynağı | … · 2017. 3. 4. · Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları 16 İkili Ağaç (Binary Tree)](https://reader035.vdocuments.site/reader035/viewer/2022062303/5fc056420a635a024e543dc4/html5/thumbnails/23.jpg)
23 Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
İkili Ağaç Özellikleri – Özellik 2
• h yüksekliğindeki ikili ağacın maksimum düğüm sayısı =
2h+1 - 1 olarak hesaplanır.
• Aşağıdaki ağaç için h = 3 olduğundan maksimum düğüm
sayısı 16 – 1 = 15 bulunur.
![Page 24: YZM 2116 Veri Yapıları - Algoritma ve Programlama Bilgi Kaynağı | … · 2017. 3. 4. · Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları 16 İkili Ağaç (Binary Tree)](https://reader035.vdocuments.site/reader035/viewer/2022062303/5fc056420a635a024e543dc4/html5/thumbnails/24.jpg)
24 Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
İkili Ağaç Özellikleri – Özellik 3
• h yüksekliğindeki ikili ağacın o minimum düğüm sayısı = h + 1 olarak hesaplanır.
• Kök düğümün h = 0 da olduğuna dikkat ediniz.
A
C
P
P
A
C
P
P
![Page 25: YZM 2116 Veri Yapıları - Algoritma ve Programlama Bilgi Kaynağı | … · 2017. 3. 4. · Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları 16 İkili Ağaç (Binary Tree)](https://reader035.vdocuments.site/reader035/viewer/2022062303/5fc056420a635a024e543dc4/html5/thumbnails/25.jpg)
25 Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
İkili Ağaç Özellikleri – Özellik 4
• En az iki düğüme sahip, n elemanlı bir ikili ağaçta,
kenar sayısı = (n - 1) olarak hesaplanır.
• Aşağıdaki örneklerde 4’er düğüm ve 3’er kenar
mevcuttur.
A
C
P
P
A
C
P
P
![Page 26: YZM 2116 Veri Yapıları - Algoritma ve Programlama Bilgi Kaynağı | … · 2017. 3. 4. · Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları 16 İkili Ağaç (Binary Tree)](https://reader035.vdocuments.site/reader035/viewer/2022062303/5fc056420a635a024e543dc4/html5/thumbnails/26.jpg)
26 Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
İkili Ağaç Özellikleri – Özellik 5
• n yaprak düğüme sahip, eksiksiz bir ikili ağaçta
(complete), kenar sayısı (k) = 2(n-1)’dir.
![Page 27: YZM 2116 Veri Yapıları - Algoritma ve Programlama Bilgi Kaynağı | … · 2017. 3. 4. · Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları 16 İkili Ağaç (Binary Tree)](https://reader035.vdocuments.site/reader035/viewer/2022062303/5fc056420a635a024e543dc4/html5/thumbnails/27.jpg)
27 Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
İkili Ağaç Gerçekleştirimi
• İki türlü gerçekleştirimi mümkündür: o Dizi kullanarak
o Bağlı liste kullanarak
![Page 28: YZM 2116 Veri Yapıları - Algoritma ve Programlama Bilgi Kaynağı | … · 2017. 3. 4. · Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları 16 İkili Ağaç (Binary Tree)](https://reader035.vdocuments.site/reader035/viewer/2022062303/5fc056420a635a024e543dc4/html5/thumbnails/28.jpg)
28 Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
Bağlı Liste İkili Ağaç Gerçekleştirimi
![Page 29: YZM 2116 Veri Yapıları - Algoritma ve Programlama Bilgi Kaynağı | … · 2017. 3. 4. · Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları 16 İkili Ağaç (Binary Tree)](https://reader035.vdocuments.site/reader035/viewer/2022062303/5fc056420a635a024e543dc4/html5/thumbnails/29.jpg)
29 Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
Bağlı Liste İkili Ağaç Gerçekleştirimi (devam…)
4
6 12
45 7
kök
1
![Page 30: YZM 2116 Veri Yapıları - Algoritma ve Programlama Bilgi Kaynağı | … · 2017. 3. 4. · Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları 16 İkili Ağaç (Binary Tree)](https://reader035.vdocuments.site/reader035/viewer/2022062303/5fc056420a635a024e543dc4/html5/thumbnails/30.jpg)
30 Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
Bağlı Liste İkili Ağaç Gerçekleştirimi (devam…)
4
6 12
45 7
kök
1
• Soru: Kökten itibaren düğümleri elimizde olan ikili
ağaç üzerinde nasıl dolaşırız?
![Page 31: YZM 2116 Veri Yapıları - Algoritma ve Programlama Bilgi Kaynağı | … · 2017. 3. 4. · Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları 16 İkili Ağaç (Binary Tree)](https://reader035.vdocuments.site/reader035/viewer/2022062303/5fc056420a635a024e543dc4/html5/thumbnails/31.jpg)
31 Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
İkili Ağaç Üzerinde Gezinme (Traverse)
• Bir ağacı bir düğüme sadece bir defa uğrayacak
şekilde gezmeye gezinme/geçiş denir.
• Gezinme, ağacın sakladığı bilgi türüne göre bir bilgiye
ulaşma, listeleme ve başka amaçlarla gerçekleştirilir.
• Doğrusal veri yapılarında baştan sona doğru
dolaşmak kolaydır.
• Ağaçlar ise düğümleri doğrusal olmayan veri
yapılarıdır. Bu nedenle farklı algoritmalar uygulanır.
• Örneğin; düğümlerin matematiksel operatörler ve
oparandlar olduğu bir ikili ağacın gezinme işlemi,
infix-postfix gibi bir notasyonu elde etmemizi sağlar.
![Page 32: YZM 2116 Veri Yapıları - Algoritma ve Programlama Bilgi Kaynağı | … · 2017. 3. 4. · Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları 16 İkili Ağaç (Binary Tree)](https://reader035.vdocuments.site/reader035/viewer/2022062303/5fc056420a635a024e543dc4/html5/thumbnails/32.jpg)
32 Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
İkili Ağaç Üzerinde Gezinme (devam…)
• İkili ağacın üzerinde gezinilmesi sırasında
bağımsız olarak 3 grup ikili ağaç parçasının 1. Kök
2. Sol alt ağaç
3. Sağ alt ağaç
değişik sıralarda gezilmesiyle ile gerçekleşir.
![Page 33: YZM 2116 Veri Yapıları - Algoritma ve Programlama Bilgi Kaynağı | … · 2017. 3. 4. · Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları 16 İkili Ağaç (Binary Tree)](https://reader035.vdocuments.site/reader035/viewer/2022062303/5fc056420a635a024e543dc4/html5/thumbnails/33.jpg)
33 Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
İkili Ağaç Üzerinde Gezinme (devam…)
• İkili ağaç üzerinde dolaşmak için 3 temel yol
vardır. Bunlar:
• Önce-kök/ziyaret (Preorder - NLR):
Kök/ziyaret, Sol, Sağ
Önce kök, sonra sol alt ağaç ve ardından sağ alt ağaç
• Ortada-kök/ziyaret (Inorder - LNR):
Sol, Kök/ziyaret, Sağ
Önce sol alt ağaç, kök ve sağ alt ağaç
• Sonra-kök/ziyaret (Postorder - LRN):
Sol, Sağ, Kök/ziyaret
Önce sol alt ağaç, sağ alt ağaç ve kök.
![Page 34: YZM 2116 Veri Yapıları - Algoritma ve Programlama Bilgi Kaynağı | … · 2017. 3. 4. · Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları 16 İkili Ağaç (Binary Tree)](https://reader035.vdocuments.site/reader035/viewer/2022062303/5fc056420a635a024e543dc4/html5/thumbnails/34.jpg)
34 Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
İkili Ağaç Üzerinde Gezinme (devam…)
A
B
C
Q M
H
K
L X
P
Örnek Ağaç
![Page 35: YZM 2116 Veri Yapıları - Algoritma ve Programlama Bilgi Kaynağı | … · 2017. 3. 4. · Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları 16 İkili Ağaç (Binary Tree)](https://reader035.vdocuments.site/reader035/viewer/2022062303/5fc056420a635a024e543dc4/html5/thumbnails/35.jpg)
35 Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
Preorder ile Gezinme
1. Düğümü ziyaret et
2. Sol alt ağaçta gezin
3. Sağ alt ağaçta gezin
Preorder Gezinme:
a, b, d, c, e
![Page 36: YZM 2116 Veri Yapıları - Algoritma ve Programlama Bilgi Kaynağı | … · 2017. 3. 4. · Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları 16 İkili Ağaç (Binary Tree)](https://reader035.vdocuments.site/reader035/viewer/2022062303/5fc056420a635a024e543dc4/html5/thumbnails/36.jpg)
36 Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
Preorder ile Gezinme (devam…)
![Page 37: YZM 2116 Veri Yapıları - Algoritma ve Programlama Bilgi Kaynağı | … · 2017. 3. 4. · Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları 16 İkili Ağaç (Binary Tree)](https://reader035.vdocuments.site/reader035/viewer/2022062303/5fc056420a635a024e543dc4/html5/thumbnails/37.jpg)
37 Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
A
B
C
Q M
H
K
L X
P
Preorder ile Gezinme (devam…)
Preorder Gezinme:
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
![Page 38: YZM 2116 Veri Yapıları - Algoritma ve Programlama Bilgi Kaynağı | … · 2017. 3. 4. · Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları 16 İkili Ağaç (Binary Tree)](https://reader035.vdocuments.site/reader035/viewer/2022062303/5fc056420a635a024e543dc4/html5/thumbnails/38.jpg)
38 Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
Inorder ile Gezinme
1. Sol alt ağaçta gezin
2. Düğümü ziyaret et
3. Sağ alt ağaçta gezin
Inorder Gezinme:
b, d, a, e, c
![Page 39: YZM 2116 Veri Yapıları - Algoritma ve Programlama Bilgi Kaynağı | … · 2017. 3. 4. · Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları 16 İkili Ağaç (Binary Tree)](https://reader035.vdocuments.site/reader035/viewer/2022062303/5fc056420a635a024e543dc4/html5/thumbnails/39.jpg)
39 Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
Inorder ile Gezinme (devam…)
![Page 40: YZM 2116 Veri Yapıları - Algoritma ve Programlama Bilgi Kaynağı | … · 2017. 3. 4. · Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları 16 İkili Ağaç (Binary Tree)](https://reader035.vdocuments.site/reader035/viewer/2022062303/5fc056420a635a024e543dc4/html5/thumbnails/40.jpg)
40 Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
Inorder ile Gezinme (devam…)
A
B
C
Q M
H
K
L X
P
Inorder Gezinme:
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
![Page 41: YZM 2116 Veri Yapıları - Algoritma ve Programlama Bilgi Kaynağı | … · 2017. 3. 4. · Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları 16 İkili Ağaç (Binary Tree)](https://reader035.vdocuments.site/reader035/viewer/2022062303/5fc056420a635a024e543dc4/html5/thumbnails/41.jpg)
41 Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
Postorder ile Gezinme
1. Sol alt ağaçta gezin
2. Sağ alt ağaçta gezin
3. Düğümü ziyaret et
Postorder Gezinme:
d, b, e, c, a
![Page 42: YZM 2116 Veri Yapıları - Algoritma ve Programlama Bilgi Kaynağı | … · 2017. 3. 4. · Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları 16 İkili Ağaç (Binary Tree)](https://reader035.vdocuments.site/reader035/viewer/2022062303/5fc056420a635a024e543dc4/html5/thumbnails/42.jpg)
42 Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
Postorder ile Gezinme (devam…)
![Page 43: YZM 2116 Veri Yapıları - Algoritma ve Programlama Bilgi Kaynağı | … · 2017. 3. 4. · Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları 16 İkili Ağaç (Binary Tree)](https://reader035.vdocuments.site/reader035/viewer/2022062303/5fc056420a635a024e543dc4/html5/thumbnails/43.jpg)
43
Postorder ile Gezinme (devam…)
A
B
C
Q M
H
K
L X
P
Postorder Gezinme:
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
![Page 44: YZM 2116 Veri Yapıları - Algoritma ve Programlama Bilgi Kaynağı | … · 2017. 3. 4. · Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları 16 İkili Ağaç (Binary Tree)](https://reader035.vdocuments.site/reader035/viewer/2022062303/5fc056420a635a024e543dc4/html5/thumbnails/44.jpg)
44
Gezinme - Örnek 1
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
![Page 45: YZM 2116 Veri Yapıları - Algoritma ve Programlama Bilgi Kaynağı | … · 2017. 3. 4. · Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları 16 İkili Ağaç (Binary Tree)](https://reader035.vdocuments.site/reader035/viewer/2022062303/5fc056420a635a024e543dc4/html5/thumbnails/45.jpg)
45
Gezinme - Örnek 2
![Page 46: YZM 2116 Veri Yapıları - Algoritma ve Programlama Bilgi Kaynağı | … · 2017. 3. 4. · Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları 16 İkili Ağaç (Binary Tree)](https://reader035.vdocuments.site/reader035/viewer/2022062303/5fc056420a635a024e543dc4/html5/thumbnails/46.jpg)
46
Gezinmeler Ne İşe Yarar?
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
Preorder:
• Ağacın kopyasını elde etme
• Düğümleri sayma
• Yaprakları sayma
• Matematiksel ifadeler için prefix gösterimini elde etme
Postorder:
• İkili ağacı silme
• Fonksiyonel dil derleyicilerinde
• Hesap makinesi programlarında
• Postfix matematiksel ifadelerinin oluşturulmasında
Inorder:
• İkili Arama Ağacında (Binary Search Tree) ağaçtaki bilgiyi sıralı
halde yazdırmada
![Page 47: YZM 2116 Veri Yapıları - Algoritma ve Programlama Bilgi Kaynağı | … · 2017. 3. 4. · Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları 16 İkili Ağaç (Binary Tree)](https://reader035.vdocuments.site/reader035/viewer/2022062303/5fc056420a635a024e543dc4/html5/thumbnails/47.jpg)
47
İkili Ağaç Uygulamaları
• Binary Search Tree (İkili Arama Ağacı): Birçok arama
uygulamasında,
• Binary Space Partition: Hemen hemen tüm 3D video
oyunlarında, hangi nesnelerin render edilmesi gerektiğini
belirlemede,
• Binary Tries: Yüksek bant genişliğine sahip router
cihazların router-tablolarını saklamada,
• Hash Trees: P2P programlarında, imza doğrulamada
• Heaps: Öncelik kuyruklarının daha etkin/verimli
gerçekleştiriminde kullanılır. Öncelik kuyrukları işletim
sisteminde prosesleri planlamak için kullanılır. Yapay zeka
uygulamalarında A* yol bulma (path finding)
algoritmasının gerçekleştiriminde Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
![Page 48: YZM 2116 Veri Yapıları - Algoritma ve Programlama Bilgi Kaynağı | … · 2017. 3. 4. · Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları 16 İkili Ağaç (Binary Tree)](https://reader035.vdocuments.site/reader035/viewer/2022062303/5fc056420a635a024e543dc4/html5/thumbnails/48.jpg)
48
İkili Ağaç Uygulamaları (devam…)
• GGM Trees: Bir çok şifreleme uygulamasında, sözde
rastgele sayıların ağacının oluşturulmasında
• Treap: Kablosuz ağlarda ve bellek tahsisinde
• T-tree: Bellek içi veritabanlarına (Datablitz, EXtremeDB,
MySQL Cluster, Oracle TimesTen) ait işlemlerinde
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
Stackoverflow tartışmasına bakınız…
![Page 49: YZM 2116 Veri Yapıları - Algoritma ve Programlama Bilgi Kaynağı | … · 2017. 3. 4. · Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları 16 İkili Ağaç (Binary Tree)](https://reader035.vdocuments.site/reader035/viewer/2022062303/5fc056420a635a024e543dc4/html5/thumbnails/49.jpg)
49
İkili Ağaç Gerçekleştirimine Dair Sorular
• Ağaçtaki düğüm sayısını nasıl bulurum?
• Ağaçtaki yaprak sayısını nasıl bulurum?
• Ağaç yüksekliğini nasıl bulurum?
• İkili ağacın katı (strict) ikili ağaç olup olmadığını
nasıl anlarım?
• İkili ağaçtaki 2 yaprak düğümün en küçük ortak
atasını nasıl bulurum (LCA – Lowest Common
Ancestor)?
• Inorder ve Preorder gezinme sonuçları verilen ikili
ağacı nasıl oluştururum?
• Inorder ve Postorder gezinme sonuçları verilen ikili
ağacı nasıl oluştururum?
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
![Page 50: YZM 2116 Veri Yapıları - Algoritma ve Programlama Bilgi Kaynağı | … · 2017. 3. 4. · Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları 16 İkili Ağaç (Binary Tree)](https://reader035.vdocuments.site/reader035/viewer/2022062303/5fc056420a635a024e543dc4/html5/thumbnails/50.jpg)
50
Ağaçtaki Düğüm Sayısını Bulma
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
![Page 51: YZM 2116 Veri Yapıları - Algoritma ve Programlama Bilgi Kaynağı | … · 2017. 3. 4. · Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları 16 İkili Ağaç (Binary Tree)](https://reader035.vdocuments.site/reader035/viewer/2022062303/5fc056420a635a024e543dc4/html5/thumbnails/51.jpg)
51
Ağaçtaki Yaprak Sayısını Bulma
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
![Page 52: YZM 2116 Veri Yapıları - Algoritma ve Programlama Bilgi Kaynağı | … · 2017. 3. 4. · Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları 16 İkili Ağaç (Binary Tree)](https://reader035.vdocuments.site/reader035/viewer/2022062303/5fc056420a635a024e543dc4/html5/thumbnails/52.jpg)
52
İki Gezinme Sonucundan Ağaç Elde Etme
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
• Eğer Preorder sonuç verildiyse ilk düğüm köktür.
• Eğer Postorder sonuç verildiyse son düğüm
köktür.
• Kök bulunduktan sonra, Inorder gezinmeye göre,
kökün sol ve sağ tarafındaki düğümler; sol ve sağ
alt ağaç olarak belirlenirler.
• Aynı teknik yeni bulunan sol ve sağ alt ağaç için
özyinelemeli (recursive) olarak uygulanır.
• Gezinme sonuçlarından birisi mutlaka Inorder
olmalıdır. Diğeri Preorder veya Postorder olabilir.
![Page 53: YZM 2116 Veri Yapıları - Algoritma ve Programlama Bilgi Kaynağı | … · 2017. 3. 4. · Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları 16 İkili Ağaç (Binary Tree)](https://reader035.vdocuments.site/reader035/viewer/2022062303/5fc056420a635a024e543dc4/html5/thumbnails/53.jpg)
53
İki Gezinme Sonucundan Ağaç Elde Etme (devam…)
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
Inorder gezinme: 20 30 35 40 45 50 55 60 7
Preorder gezinme: 50 40 30 20 35 45 60 55 70
Soru: İkili ağacı elde ediniz.
![Page 54: YZM 2116 Veri Yapıları - Algoritma ve Programlama Bilgi Kaynağı | … · 2017. 3. 4. · Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları 16 İkili Ağaç (Binary Tree)](https://reader035.vdocuments.site/reader035/viewer/2022062303/5fc056420a635a024e543dc4/html5/thumbnails/54.jpg)
İYİ ÇALIŞMALAR…
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
![Page 55: YZM 2116 Veri Yapıları - Algoritma ve Programlama Bilgi Kaynağı | … · 2017. 3. 4. · Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları 16 İkili Ağaç (Binary Tree)](https://reader035.vdocuments.site/reader035/viewer/2022062303/5fc056420a635a024e543dc4/html5/thumbnails/55.jpg)
Yararlanılan Kaynaklar
• Ders Kitabı:
• Data Structures through JAVA, V.V.Muniswamy
• Yardımcı Okumalar:
• Data Structures and Algorithms in Java, Narashima
Karumanchi
• Data Structures, Algorithms and Applications in Java,
Sartaj Sahni
• Algorithms, Robert Sedgewick
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları