Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

İkili Ağaçlar İkili Arama Ağaçları. Ağaçlar * Bağlantılı listedeki erişim zamanı lineerdir. n Çoğu işlemlerin (operasyon) (arama, ekleme, silme) çalışma.

Benzer bir sunumlar


... konulu sunumlar: "İkili Ağaçlar İkili Arama Ağaçları. Ağaçlar * Bağlantılı listedeki erişim zamanı lineerdir. n Çoğu işlemlerin (operasyon) (arama, ekleme, silme) çalışma."— Sunum transkripti:

1 İkili Ağaçlar İkili Arama Ağaçları

2 Ağaçlar * Bağlantılı listedeki erişim zamanı lineerdir. n Ç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?

3 Ağaçlar * Ağaç düğümlerin koleksiyonudur. n 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,...., T k altağaçlarını içerir, herbiri r’ den gelen bir yönlendirilmiş kenar ile köke bağlıdır.

4 Bazı tanımlar * Çocuk ve ebeveyn n Kök hariç her düğümün bir ebeveyni vardır. n Bir düğümün çocuk sayısı değişebilir. * Yapraklar n Çocuğu olmayan düğümlere denir. * Kardeş n Ebeveyni aynı olan düğümlerdir.

5 Bazı Tanımlar * Patika – yol - Path * Uzunluk - Length n Bir yoldaki kenar sayısı * Bir düğümün derinliği n 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. * Bir düğümün yüksekliği n 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. * Ata (veya dede) ve torun

6 Örnek UNIX dizini

7 İ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.

8 Örnek:ifade 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.

9 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) n Kökteki veriyi yaz n Sol altağaçtaki verileri iteratif olarak yaz n Sağ altağaçtaki verileri iteratif olarak yaz

10 Öncekök, sonrakök, ve içkök Preorder, Postorder and Inorder * Öncekök gezme n düğüm, sol, sağ n önek ifadesi  ++a*bc*+*defg

11 Öncekök, sonrakök, ve içkök * Sonrakök gezme n Sol, sağ, düğüm n Sonek ifadesi  abc*+de*f+g*+ * İçkök yazma n Sol, düğüm, sağ n İçek ifadesi  a+b*c+d*e+f*g

12 * Öncekök

13 * sonrakök

14 Öncekök, sonrakök, ve içkök

15 İkili Ağaçlar * İkili ağaç SVY üzerindeki muhtemel işlemler n parent - ebeveyn n left_child, right_child - sol_çocuk, sağ_çocuk n Sibling - kardeş n root, etc - kök * Gerçekleştirmesi n İkili ağaçta en fazla iki çocuk olduğu için, bunlar için pointer kullanabiliriz.

16 Karşılaştırma: Genel bir ağaç gerçekleştirilmesi

17 İ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.

18 İkili Arama Ağaçları Bir ikili arama ağacı İkili arama ağacı değil

19 İkili Arama Ağaçları * Bir düğümün ortalama derinliği O(log N); maksimum derinliği ise O(N) Ayni elemanları gösteren iki ikili arama ağacı

20 Gerçekleştirme

21 İ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.

22

23 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)

24 İ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

25 findMin/ findMax * 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. * findMax için de mantık benzer şekildedir. * Zaman karmaşıklığı = O(ağaç yüksekliği)

26 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)

27 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.

28 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

29 sil (3) düğümün 2 çocuğu varsa n 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  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çlar İkili Arama Ağaçları. Ağaçlar * Bağlantılı listedeki erişim zamanı lineerdir. n Çoğu işlemlerin (operasyon) (arama, ekleme, silme) çalışma." indir ppt

Benzer bir sunumlar


Google Reklamları