kili Aalar kili Arama Aalar H Qunun sunumlarndan
- Slides: 35
İkili Ağaçlar İkili Arama Ağaçları H. Qu’nun sunumlarından tercüme edilerek uyarlanmıştır.
Ağaçlar * Bağlantılı listedeki erişim zamanı lineerdir. Çoğu işlemlerin (operasyon) (arama, ekleme, silme) çalışma zamanını daha aza indiren (O(log N) gibi) başka bir veri yapısı var mıdır? n
Ağaçlar * Ağaç düğümlerin koleksiyonudur. Koleksiyon boş olabilir n Eğer boş değilse, ağaç birbirlerinden faklı r kök düğümünü ve sıfır veya birden fazla boş olmayan T 1, T 2, . . , Tk altağaçlarını içerir, herbiri r’ den gelen bir yönlendirilmiş kenar ile köke bağlıdır. n
Bazı tanımlar * Çocuk ve ebeveyn Kök hariç her düğümün bir ebeveyni vardır. n Bir düğümün çocuk sayısı değişebilir. n * Yapraklar n * Çocuğu olmayan düğümlere denir. Kardeş n Ebeveyni aynı olan düğümlerdir.
Bazı Tanımlar Patika – yol - Path * Uzunluk - Length * n * Bir yoldaki kenar sayısı Bir düğümün derinliği Kökten düğüme olan tekil yolun uzunluğu n Bir ağacın derinliği en derinde bulunan yaprağın derinliğine eşittir. n * Bir düğümün yüksekliği Düğümden bir yaprağa olan en uzun yola denir. n Bütün yapraklar yükseklik 0 ‘ da bulunur n Bir ağacın yüksekliği kökün yüksekliğine eğittir. n * Ata (veya dede) ve torun
Örnek UNIX dizini
İkili Ağaçlar * Bu ağaçta hiçbir düğümün ikiden fazla çocuğu olamaz * Ortalama bir ikili ağacın derinliği N ‘den küçüktür, en kötü durumda bile derinlik N-1 olabilir.
Örnek: İfade ağaçları * * * Yapraklar terim (sabit veya değişken) Diğer düğümler işlem Bazı işlemler binary değilse ikili ağaçta gösterilemeyebilir.
İfade Ağacından Eşitlik Çıkarma * * * Mümkün olduğunca alttan yukarı doğru eşitlik oluşturulur. Her alt ağaç bir parantez içidir. Ara işlem 1 (Eksinin sol tarafı) 3*7 (alt ağaç) n 4 + (3*7) (alt ağaç) n Eksinin sol tarafı tamamlandı. n * Ara işlem 2 (Eksinin sağ tarafı) 3 + 4 (alt ağaç) n 5 / (3 + 4) (alt ağaç) n Eksinin sağ tarafı tamamlandı. n * Ara işlem 3 (Kökün sol tarafı) (4+(3*7)) - (5/(3+4)) (alt ağaç) n Artının sol tarafı tamamlandı n * * Ara işlem 4 (Kökün sağ tarafında sayı var. ) Eşitliğin son hali * * (4+(3*7)) - (5/(3 + 4))) + 6 Bazı parantezleri kaldırabiliriz (4+3*7) – (5/(3+4)) + 6 veya n 4+3*7 – (5/(3+4)) + 6 n Kaynak: http: //cs. middlesexcc. edu/~schatz/csc 236/handouts/Trees. html
Eşitlikten İfade Ağacı Oluşturma * * ((a+b)+c*(d+e)+f)*(g+h) Değişik adımlar takip edilebilir. Parantez önceliğine dikkat edilir. n İşlemler ile alt eşitlikler bağlanır. Genelde sıra takip edilir. n 1. 2. 3. 4. 5. (a+b) parantez (d+e) parantez (g+h) parantez c*(d+e) işlem önceliği Parantez içi ve Alt eşitlik bağlama 5. 1 (a+b)+ c*(d+e) 5. 2 (a+b)+ c*(d+e) +f 6. ((a+b)+ c*(d+e) +f)*(g+h) Kaynak: http: //www. expertsmind. com/questions/design-a-time-algorithm-3016344. aspx 6 3 5. 2 5. 1 1 4 2
Ağaç Gezme (Tree Traversal) * Bir ağaçtaki verileri belli bir düzende yazmak için kullanılır. * Önce-kök Gezme (Pre-order traversal) Kökteki veriyi yaz n Sol altağaçtaki verileri iteratif olarak yaz n Sağ altağaçtaki verileri iteratif olarak yaz n
Öncekök, sonrakök, ve içkök Preorder, Postorder and Inorder * Öncekök gezme kök, sol, sağ n önek ifadesi n 1++a*bc*+*defg
Öncekök, sonrakök ve içkök * Sonrakök gezme Sol, sağ, kök n Sonek ifadesi n 1 abc*+de*f+g*+ * İçkök gezme Sol, kök, sağ n İçek ifadesi n 1 a+b*c+d*e+f*g
Sonek İfadesinden Ağaç Oluşturma * * * 1. 2. 3. 4. 5. 6. abc*+de*f+g*+ Sonek : sol, sağ, kök İşlemler takip edilir. bc* a(b*c)+ de* (d*e)f+ ((d*e)+f) g* (a+(b*c)) ((d*e)+f)*g)+ -> b*c -> a+(b*c) -> d*e -> (d*e)+f -> ((d*e)+f)*g -> (a+(b*c))+(((d*e)+f)*g) 6 2 5 1 4 3
* Öncekök
* sonrakök
Öncekök, sonrakök ve içkök
İkili Ağaçlar * İkili ağaç SVY üzerindeki muhtemel işlemler parent - ebeveyn n left_child, right_child - sol_çocuk, sağ_çocuk n Sibling - kardeş n root, etc - kök n * Gerçekleştirmesi n İkili ağaçta en fazla iki çocuk olduğu için, bunlar için pointer kullanabiliriz.
Karşılaştırma: Genel bir ağaç gerçekleştirilmesi
İkili Arama Ağacı * Anahtarları düğümler içinde depolar; böylece arama, ekleme ve silme etkili bir şekilde yapılabilir. İkili arama ağaç özelliği n Herbir X düğümü için, solundaki altağaçtaki (subtree) anahtarlar X düğümünde bulunan değerden daha küçüktür, ve sağındaki ağaçtaki anahtarlar X düğümünde bulunan değerden daha büyüktür.
İkili Arama Ağaçları Bir ikili arama ağacı İkili arama ağacı değil
İkili Arama Ağaçları Ayni elemanları gösteren ikili arama ağacı * Bir düğümün ortalama derinliği O(log N); maksimum derinliği ise O(N)
Gerçekleştirme
İAA Arama * Eğer 15’i arıyorsak arama işlemi biter. * Eğer aranan anahtar < 15 ise, sol altağaçta aramaya devam edilir. * Eğer aranan anahtar > 15 ise, sağ altağaçta aramaya devam edilir.
Arama (Bul - Find) * Find X: X anahtarını bulunduran düğümün pointer ini dönder veya eğer böyle bir düğüm yok ise NULL dönder. * Zaman Karmaşıklığı n O(ağaç yüksekliği)
İAA’ında içkök gezme * Bütün anahtarları sıralanmış bir şekilde getirir. içkök: 2, 3, 4, 6, 7, 9, 13, 15, 17, 18, 20
find. Min/ find. Max Ağaçtaki en küçük elemanı içeren düğümü dönderir. * Kökten başla ve sol çocuk var olduğu sürece sola git. Durma noktasındaki eleman en küçük elemandır. * find. Max için de mantık benzer şekildedir. * Zaman karmaşıklığı = O(ağaç yüksekliği) *
Ekle - insert * Ağaçta ilgili yere find komutunda olduğu gibi git Eğer X varsa, bir şey yapma (veya bir şey güncelle) Diğer durumda, X i gezilen yoldaki en son noktaya ekle. * Zaman Karmaşıklığı = O(ağaç yüksekliği) * *
Sil - delete * Bir düğüm silindiği zaman, silinen düğümün çocuklarına nasıl yerleştireceğimizi düşünmemiş gerekir. n Bu işlem arama ağacı (search tree) özelliğinin korunması için gereklidir.
Sil Üç durum vardır: (1) düğüm yaprak ise n sil (2) düğümün tek çocuğu varsa n Ebeveynden bir çocuğa bir pointer ata
sil (3) düğümün 2 çocuğu varsa Silinen düğüm anahtarını sağ altağaçtaki minimum elemanla yer değiştir (replace the key of that node with the minimum element at the right subtree ) n Minimum elemanı sil n 1 Daha sonra ya hiç çocuk kalmamıştır yada bir çocuk vardır. Bu durumda durum 1 ve 2 uygulanır. . * Zaman karmaşıklığı = O(ağaç yüksekliği)
İkili Ağaç Örnek ekle 3, 2, 1, 4, 5, 6, 7, 16, 15, 14 3 3 Şekil 1 2 2 2 Şekil 2 1 Şekil 3 3 2 4 1 1 Şekil 4 Şekil 5 4 5
İkili Ağaç Örnek 3 ekle 3, 2, 1, 4, 5, 6, 7, 16, 15, 14 3 2 1 İkili ağacın son hali 4 4 5 6 7 5 Şekil 7 16 6 15 14
İkili Ağaç Ödev * 18, 5, 15, 3, 12, 9, 6, 8, 4, 13