NİŞANTAŞI ÜNİVERSİTESİ

Slides:



Advertisements
Benzer bir sunumlar
Yığınlama Sıralaması (Heap Sort)
Advertisements

Ders İçeriği Ağaç Veri Modeli Tanım ve Gerçekleştirim İkili Ağaç
AVL-Ağaçları (Trees).
Veri Yapıları ve Algoritmalar dönem
Değişken Bildirimleri
İkili Ağaçlar İkili Arama Ağaçları
Özyinelemeli(Recursive) Algoritma Tasarımı
İkili Arama Ağaçları (Binary Search Trees) BST
Binary Ağaçlar (Ekleme/Silme Örnekleri)
Veri Yapıları Ve Algoritmalar
PROGRAMLAMA DİLLERİNE GİRİŞ Ders 5: Fonksiyonlar
MIT503 Veri Yapıları ve algoritmalar Veri ağaçları
Veri Yapıları ve Algoritmalar
Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi
Nesneye Dayalı Programlama
Özyineleme(Recursion)
Rekabet ortamında arama Adversarial Search
YMT219: Veri Yapıları Ders Saatleri: Pazartesi 9:15-12, 17:30-20:15
1 Diller nasıl yazılmıştır? İki ana strateji: –Yorumlayıcılar - Interpreters (eski ve az çalışılmıştır) –Derleyiciler - Compilers (yeni, daha yoğun çalşılmıştır)
Dengeli İkili Ağaç Kerem ERZURUMLU Hacettepe Üniversitesi Bilgisayar Bilimleri Mühendisliği.
Trees, Vectors, Iterators. ADT Abstract Data Type (ADT) vs implementation -Soyut Veri Türleri - Uygulamaları.
Veri Yapıları ve Algoritmaları ders_1
Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi
Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi
Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi
AVL(Adel’son-Vel’skiĭ and Landis) Ağacı AVL ağacı, iki alt ağacının yükseklikleri farkının en fazla 1 olabildiği dengeli ikili arama ağacıdır. AVL ağacında.
İbrahim Olgaç PROGRAMLAMA DİLLERİ SUNUMU C#
Bölüm 10: Kayıtlar – Records (structs)
NİŞANTAŞI ÜNİVERSİTESİ
YZM 2116 Veri Yapıları Yrd. Doç. Dr. Deniz KILINÇ
NİŞANTAŞI ÜNİVERSİTESİ
Bölüm 6: Kullanıcı Tanımlı Fonksiyonlar I
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
SQL Server - Indexes.
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
Algoritmalar II Ders 16 Prim algoritması.
Ders 9: İkili arama ağaçları
Sunum transkripti:

NİŞANTAŞI ÜNİVERSİTESİ Veri Yapıları ve Algoritmalar DERS 12 NİŞANTAŞI ÜNİVERSİTESİ © Mühendislik Mimarlık Fakültesi mmf.nisantasi.edu.tr

YBLG202 Veri Yapıları ve Algoritmalar DERS 12 İKİLİ AĞAÇLAR NİŞANTAŞI ÜNİVERSİTESİ ©/Yrd. Doç. Dr. Önder Eyecioğlu

NİŞANTAŞI ÜNİVERSİTESİ ©/Yrd. Doç. Dr. Önder Eyecioğlu İKİLİ AĞAÇLAR İkili Ağaç Yapısı Eğer bir ağaçtaki her düğümün en fazla 2 çocuğu varsa bu ağaca ikili ağaç denir. Diğer bir deyişle bir ağaçtaki her düğümün derecesi en fazla 3 ise o ağaca ikili ağaç denir. İkili ağaçların önemli özelliği eğer dengeli ise çok hızlı bir şekilde ekleme, silme ve arama işlemlerini yapabilmesidir. Ağaç veri yapısı üzerinde işlem yapan fonksiyonların birçoğu kendi kendini çağıran (recursive) fonksiyonlardır. Çünkü bir ağacı alt ağaçlara böldüğümüzde elde edilen her parça yine bir ağaç olacaktır ve fonksiyonumuz yine bu ağaç üzerinde işlem yapacağı için kendi kendini çağıracaktır. İkili ağaç veri yapısının tanımında ağaç veri yapısının tüm tanımları geçerlidir, farklı olan iki nokta ise şunlardır: i. Ağacın derecesi (degree of tree) 2'dir. ii. Sol ve sağ alt ağacın yer değiştirmesiyle çizilen ağaç aynı ağaç değildir. Input: { 40, 4, 34, 45, 14, 55, 48, 13, 15, 49, 47 } NİŞANTAŞI ÜNİVERSİTESİ ©/Yrd. Doç. Dr. Önder Eyecioğlu

NİŞANTAŞI ÜNİVERSİTESİ ©/Yrd. Doç. Dr. Önder Eyecioğlu İKİLİ AĞAÇLAR Input: { 40, 4, 34, 45, 14, 55, 48, 13, 15, 49, 47 } İkili Ağaç Yapısı İkili ağaç (binary tree) veri yapısının yoğun biçimde kullanılır oluşu iki önemli uygulama alanı ile ilişkilidir. Sıralama algoritmaları ile derleyicilerde sözdizim çözümleme (syntax analysis), kod geliştirme (code optimization) ve amaç kod üretme (object code generation) algoritmaları bu veri yapısını kullanırlar. Ayrıca kodlama kuramı (coding theory), turnuva düzenleme, aile ağacı gösterimi ve benzerleri tekil kullanımlar da söz konusudur. Ağaçlarla ilgili özellikler:  Bir binary ağaçta, bir i seviyesindeki maksimum node sayısı 2i ’dir. ( , 0 olduğu için).  k derinliğine sahip bir binary ağaçta maksimum node sayısı 2k − 1 ’dir.  Seviye ve derinlik kökle başlayacak şekilde aynı sayılmaktadır.  Ağaçta node’ların eksik kısımları NULL olarak adlandırılır. NİŞANTAŞI ÜNİVERSİTESİ ©/Yrd. Doç. Dr. Önder Eyecioğlu

NİŞANTAŞI ÜNİVERSİTESİ ©/Yrd. Doç. Dr. Önder Eyecioğlu İKİLİ AĞAÇLAR Input: { 40, 4, 34, 45, 14, 55, 48, 13, 15, 49, 47 } İkili Ağaç Yapısı İkili bir ağaç için veri yapısı aşağıdaki gibi tanımlanabilir; struct node { int data; struct node *left; struct node *right; }; İhtiyaç olduğunda yapı içerisinde bir de parent tanımlanabilir. Ağaçların yapısının da bağlı liste olduğu tanımdan anlaşılabilir. Fakat normal bağlı listelerden farkı nonlinear olmasıdır. Yani doğrusal değildir. NİŞANTAŞI ÜNİVERSİTESİ ©/Yrd. Doç. Dr. Önder Eyecioğlu

NİŞANTAŞI ÜNİVERSİTESİ ©/Yrd. Doç. Dr. Önder Eyecioğlu İKİLİ AĞAÇLAR İkili Ağaç Üzerinde Dolaşma İkili ağac uzerinde dolaşma bircok şekilde yapılabilir Ancak, rastgele dolaşmak yerine, önceden belirlenmiş bir yonteme, bir kurala uyulması algoritmik ifadeyi kolaylaştırır. Ustelik rekursif fonksiyon yapısı kullanılırsa ağac üzerinde işlem yapan algoritmaların tasarımı kolaylaşır. Once-kok (preorder), kok-ortada (inorder), sonra-kok (postorder) olarak adlandırılan uc değişik dolaşma şekli ceşitli uygulamalara cozum olmaktadır. Preorder (Önce Kök) Dolaşma (NLR): Önce kök yaklaşımında ilk olarak root(kök), sonra left (sol alt ağaç) ve ardından right (sağ alt ağaç) dolaşılır. NİŞANTAŞI ÜNİVERSİTESİ ©/Yrd. Doç. Dr. Önder Eyecioğlu

NİŞANTAŞI ÜNİVERSİTESİ ©/Yrd. Doç. Dr. Önder Eyecioğlu İKİLİ AĞAÇLAR İkili Ağaç Üzerinde Dolaşma 2. Inorder (Kök ortada) Dolaşma (LNR): Inorder dolaşmada önce left ( sol alt ağaç), sonra root (kök) ve right (sağ alt ağaç) dolaşılır. Fonksiyonun türü yine void olmalıdır. NİŞANTAŞI ÜNİVERSİTESİ ©/Yrd. Doç. Dr. Önder Eyecioğlu

NİŞANTAŞI ÜNİVERSİTESİ ©/Yrd. Doç. Dr. Önder Eyecioğlu İKİLİ AĞAÇLAR İkili Ağaç Üzerinde Dolaşma 3. Postorder(Kök sonda) Dolaşma (LRN): Postorder yaklaşımında ise, once left ( sol alt ağaç), sonra right ( sağ alt ağaç) ve root (kök) dolaşılır.. NİŞANTAŞI ÜNİVERSİTESİ ©/Yrd. Doç. Dr. Önder Eyecioğlu

YBLG202 Veri Yapıları ve Algoritmalar Kaynakça NİŞANTAŞI ÜNİVERSİTESİ ©/Yrd. Doç. Dr. Önder Eyecioğlu

NİŞANTAŞI ÜNİVERSİTESİ ©/Yrd. Doç. Dr. Önder Eyecioğlu KAYNAKÇA M. T. Goodrich, R. Tamassia, D. M. Mount, Data Structures and Algorithms in C++, John Wiley & Sons, Inc., 2011 Hakan Kutucu, VERİ YAPILARI, Karabük Üniversitesi Mühendislik fakültesi, 2014 Data Structures and Algorithms, TutorialPoints, NİŞANTAŞI ÜNİVERSİTESİ ©/Yrd. Doç. Dr. Önder Eyecioğlu