Ağaçlar (Trees) Ağaçlar (Trees)



Benzer belgeler
Veri Yapıları. Ağaçlar

AĞAÇLAR. Doç. Dr. Aybars UĞUR

AĞAÇLAR TREES. Doç. Dr. Aybars UĞUR

Ağaç (Tree) Veri Modeli

DOSYA ORGANİZASYONU. Ağaç Yapıları ÖZLEM AYDIN TRAKYA ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ

Week 9: Trees 1. TREE KAVRAMI 3. İKİLİ AĞAÇ DİZİLİMİ 4. İKİLİ ARAMA AĞACI 2. İKİLİ AĞAÇ VE SUNUMU > =

YZM 2116 Veri Yapıları

Binary Tree nedir?uygulamas nasl yaplr?

AĞAÇ-TREE VERİ YAPISI

Max - Min Heap Tree (Max ve Min Yığıt Ağaçları) Veri Yapıları ve Algoritmalar 2 - Mustafa EGE Ders Notları

Ağaç Yapıları (Tree Structures) Kütük Organizasyonu 1

BIL222 Veri Yapıları ve Algoritmalar

Final Sınavı Soruları Bahar 2018

YIĞINLAR YIĞINLAR. Yığın İşlemleri Postfix, Prefix, Infix. G. Ü. Bilgisayar Mühendisliği Bölümü

Arasınav Soruları Bahar 2018

YZM 2116 Veri Yapıları

BIP116-H14-1 BTP104-H014-1

YZM 2116 Veri Yapıları

Arasınav Örnek Soruları Bahar 2018

AVL Agacı {\} /\ Suhap SAHIN Onur GÖK

Veri Yapıları. Ağaçlar. Ağaçlar genel bilgi

Çok Yollu Ağaçlar (Multi-Way Trees)

Final Sınavı Örnek Soruları Bahar 2018

Algoritmalar. İkili Arama Ağaçları. Bahar 2016 Doç. Dr. Suat Özdemir 1

Algoritma Geliştirme ve Veri Yapıları 9 Ağaç Veri Modeli ve Uygulaması. Mustafa Kemal Üniversitesi

Graflar bilgi parçaları arasındaki ilişkileri gösterirler.

Çok Yollu Ağaçlar: B*-Trees B*-Trees

Veri Modelleri. Ağaç Veri Modeli. Ağaç Veri Modeli

VERİ YAPILARI DERS NOTLARI BÖLÜM 1 GİRİŞ. Yard. Doç. Dr. Deniz KILINÇ

Çizgeler (Graphs) Doç. Dr. Aybars UĞUR

SOMEBODY ELSE'S. ( DATA STRUCTURES and ALGORITHMS ) Veri Yapıları ve Algoritmaları

#$% &'#(# Konular. Binary Tree Structures. Binary Search Trees AVL Trees Internal Path Reduction Trees Deerlendirme

BAĞLI LİSTELER BAĞLI LİSTELER

Algoritmalar. Kırmızı Siyah Ağaçları Red Black Trees. Bahar 2017 Doç. Dr. Suat Özdemir 1

Bölüm 6. Karma. Olcay Taner Yıldız. O. T. Yıldız, C && Java ile Veri Yapılarına Giriş, Boğaziçi Üniversitesi Yayınevi, / 31

#$% &'#(# Konular. B-Tree and Derivatives. B-Trees B#-Trees B+-Trees Deerlendirme

Ağaçlar(Trees) AĞAÇ VERİ MODELİ

Veri Yapıları ve Algoritmalar dönem

YZM 2116 Veri Yapıları

7.Hafta Dengeli Arama Ağaçları (Red - Black Tree)

Bölüm 5. Ağaç. Olcay Taner Yıldız. O. T. Yıldız, C && Java ile Veri Yapılarına Giriş, Boğaziçi Üniversitesi Yayınevi, / 73

Görsel Programlama (Visual Programming)

HACETTEPE ÜNİVERSİTESİ BAHAR DÖNEMİ

VERİ YAPILARI LİSTELER. Yrd. Doç. Dr. Murat GÖK Bilgisayar Mühendisliği Bölümü YALOVA ÜNİVERSİTESİ

ELN1002 BİLGİSAYAR PROGRAMLAMA 2

DOSYA ORGANİZASYONU. Çarpışma çözümleme yöntemleri ÖZLEM AYDIN TRAKYA ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ

AĞAÇ (TREE) Veri Modeli

VERİ YAPILARI DERS NOTLARI BÖLÜM 5 QUEUE (KUYRUK) Yard. Doç. Dr. Deniz KILINÇ

BMT207 VERİ YAPILARI DATA STRUCTURE

Manisa Celal Bayar Üniversitesi Yazılım Mühendisliği Bölümü YZM Veri Yapıları Dersi. Proje#2

BMB204. Veri Yapıları Ders 9. B+ Ağacı, Hash, Heap. Erdinç Uzun NKÜ Çorlu Mühendislik Fakültesi Bilgisayar Mühendisliği Bölümü

YZM ALGORİTMA ANALİZİ VE TASARIM DERS#6: AZALT VE FETHET YÖNTEMİ

Algoritmalar. Heap Sort. Bahar 2017 Doç. Dr. Suat Özdemir 1

Java da İşleçler, Ders #3 (4 Kasım 2009)

İçerik. Java da İşleçler, İşleçler. Aritmetik İşleçler - 1. Aritmetik İşleçler - 2. Geçen ders: Bu ders: BS-515 Nesneye Yönelik Programlama

Alıştırma 1: Yineleme

Algoritmalar. DERS 7 Dengeli Arama Ağaçları Kırmızı-siyah ağaçlar Kırmızı-siyah ağacın yüksekliği Rotation / Dönme Insertion / araya yerleştirme

CSE225 DATA STRUCTURES 2006 Student Name: MIDTERM EXAM II M.B.T. Student Number:

#$% &'#(# Konular. Direct File Organization. Progressive Overflow Buckets Linear Quotient Brent s Method Binary Tree

Yigin & Kuyruk {\} /\ Suhap SAHIN Onur GÖK

VERİ TABANI İŞLEMLERİ (NESNE TABANLI PROGRAMLAMA TEKNİĞİ İLE)

VERİ YAPILARI DERSİ TEST SORULARI

YZM 2116 Veri Yapıları

İNÖNÜ ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ 2. SINIF 1. DÖNEM VERİ YAPILARI DERSİ LABORATUAR ÖDEVİ

Bölüm 8. Ayrık Küme. Olcay Taner Yıldız. O. T. Yıldız, C && Java ile Veri Yapılarına Giriş, Boğaziçi Üniversitesi Yayınevi, / 16

Ders 4: Diziler (Arrays( Arrays) barisgokce.com

Özyineleme (Recursion)

Veri Yapıları. Yrd. Doç. Dr. Şadi Evren ŞEKER

GENETİK ALGORİTMA GEZGİN SATICI ÖDEVİ

HACETTEPE ÜNİVERSİTESİ BAHAR DÖNEMİ

İNÖNÜ ÜNİVERSİTESİ MÜH. FAK. BİLGİSAYAR MÜH. BÖL. ALGORİTMA VE PROGRAMLAMA 2 DERSİ LAB. ÖDEVİ

BLM-431 YAPAY ZEKA. Ders-4 Bilgisiz Arama Yöntemleri. Yrd. Doç. Dr. Ümit ATİLA

Görsel Programlama (Visual Programming) 2.Hafta

Algoritma Geliştirme ve Veri Yapıları 10 Graf Veri Modeli. Mustafa Kemal Üniversitesi

Week 6: Bağlı Liste (Linked List) BAĞLI LİSTE KAVRAMI TEKİL (SINGLE) BAĞLI LİSTE ÇİFT (DOUBLE) BAĞLI LİSTE DAİRESEL (CIRCULAR) BAĞLI LİSTE

1 PROGRAMLAMAYA GİRİŞ

HACETTEPE ÜNİVERSİTESİ BAHAR DÖNEMİ

Java da Soyutlama ( Abstraction ) ve Çok-biçimlilik ( Polymorphism )

YMT219 VERİ YAPILARI ÖDEV-1

VERİ YAPILARI DERS NOTLARI BÖLÜM 4 STACK (YIĞIN, YIĞIT) Yard. Doç. Dr. Deniz KILINÇ

YZM VERİ YAPILARI DERS#9: HASH FONKSİYONLARI

BİL-341 ALGORİTMALAR BÜYÜK O NOTASYONU AHMET ATAKAN atakanahmet@hotmail.com KIRGIZİSTAN-TÜRKİYE MANAS ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ

Ç NDEK LER 1 XML E G R fi 1 XML Nedir? 1 XML in Avantajlar 3 HTML ve XML Aras ndaki Farklar 4 XML Dosyalar n Görüntülemek 6 XML Dosyas Oluflturmak 9

NESNE TABANLI PROGRAMLAMA-1 DERS UYGULAMALARI (22 EYLÜL - 14 KASIM

Yrd. Doç. Dr. Caner ÖZCAN

Ders 8: Metotlar. barisgokce.com

/*Aşağıda ki kodları doğru şekilde anlar ve kullanırsanız java da sınıfları biraz da olsa anlamış olursunuz.*/

CBÜ Teknoloji Fakültesi, Yazılım Mühendisliği. Nesneye Yönelik Programlama

Nesne İşaretçileri. Binnur Kurt Bilgisayar Mühendisliği Bölümü İstanbul Teknik Üniversitesi. Sınıf Yapısı. Kalıtım Çok Şekillilik

Özyineleme {\} /\ Suhap SAHIN Onur GÖK

Algoritma Geliştirme ve Veri Yapıları 2 Veri Modelleri. Mustafa Kemal Üniversitesi

İNTERNET TABANLI PROGRAMLAMA

Merge Sort Bireşen Sıralama

YZM 2116 Veri Yapıları

BM312 Ders Notları 2014

Akademik Rapor Hazırlama ve Yazışma Teknikleri

Algoritmalara Giriş Ekim 17, 2005 Massachusetts Institute of Technology Profesörler Erik D. Demaine ve Charles E. Leiserson Dağıtım 15.

Burak Kıymaz JAVA FX

MOBİL UYGULAMA GELİŞTİRME

İl İlçe uygulaması. : Seçilen ile ait ilçeleri listeleyen program. //İl değişkeni için kodu aşağıdaki sayfadan kopyalayınız.

Transkript:

Giriş Binary Trees (İkilik Ağaçlar) Full Binary Trees Proper Binary Trees Complete Binary Trees Heap Binary Trees Balanced Binary Trees Binary Search Trees (İkilik Arama Ağaçları) Yrd.Doç.Dr. M. Ali Akcayol Ağaçlar hiyerarşik ilişkileri göstermek için kullanılır. Her ağaç node lar ve kenarlardan (edge) oluşur. Herbir node bir nesneyi gösterir. Herbir kenar (bağlantı) iki node arasındaki ilişkiyi gösterir. Arama işlemi bağlı dizilere göre çok hızlı yapılır. root node edge 1

Örnek ağaç yapısı root (kök) siblings (kardeşler) parent & child (aile & çocuk) ancestor & descendant (ata & oğul) Terminoloji u ve v gibi aralarında bir kenar olan iki node olsun. u parent node ve v ise child node olarak adlandırılır. Bu kenar (u, v) şeklinde gösterilir. Bir ağaçta parent ı olmayan tek bir node vardır ve kök (root) diye adlandırılır. Child node a sahip olmayan node lar ise yaprak (leaf) olarak adlandırılır. root u: parent v: child u v leaves 2

Terminoloji (devam) En az bir child a sahip olan node lar internal node olarak adlandırlır. internal node lar yapraklar (leaves - external) Terminoloji (devam) Aynı parent a sahip iki node kardeş (siblings) olarak adlandırılır. Bir node parent ı olduğu veya parent ının parent ı olduğu tüm node ların atasıdır (ancestor). Bir node çocuğu olduğu veya çocuğunun çocuğu olduğu node un oğuludur (descendant). v veykardeş node lar u ve v node ları x in ataları v vex node ları u nun oğullarıdır v u y x 3

Terminoloji (devam) Bir altağaç (subtree) bütün oğullarıyla birlikte herhangi bir node dur. Ağaç Altağaç (subtree) v v Terminoloji (devam) Seviye (Level - Depth) : root node undan herhangi bir n node una giden yolda geçilen node sayısıdır. Yükseklik (Height) : root ile yaprak node ları arasındaki en yüksek seviyedir. Level 0 Level 1 height = 4 n Level 2 Level 3 4

Terminoloji (örnek) A tüm node ların atasıdır (ancestor). B G node ları kardeştir (siblings). H ve I node ları C node unun çocuklarıdır (children). P ve Q node ları A, E, K node larının oğullarıdır (descendants). Level 0 A Level 1 B C D E F G Level 2 H I J K L M N O Level 3 P Q altağaç (subtree) Ağaç oluşturma 1- Herbir node kendisine ait olan tüm child node ları gösterebilir. Ancak child sayısı değişken olduğu için infeasible dir. 2- Herbir node kendisine ait olan child ile kardeşlerinin tümü gösterebilir. Kardeşler bağlı listeyle gösterilir. class treenodec public string bilgi; public treenodec child; public treenodec sibling; A B NULL A NULL root child sibling C NULL A D H NULL NULL B C D E B C D E H I H I 5

Binary Trees (İkilik Ağaçlar) 1- Herbir node en fazla iki tane child node a sahip olabilir. 2- Left child : Bir node un sol işaretçisine bağlıdır. 3- Right child : Bir node un sağ işaretçisine bağlıdır. u v x: u nun left child ı y: u nun right child ı w: v nin right child ı z: w nun left child ı x y w node deger z leftchild rightchild Binary Trees (İkilik Ağaçlar) 1- rootnode un sağ ve sol işaretçilerinin gösterdiği her node bir altağacı gösterir. 6

Full Binary Trees Eğer T ağacı boş ise,, T yüksekliği 0 olan bir full binary ağaçtır. T ağacının yüksekliği h ise ve yüksekliği h den küçük olan tüm node lar iki child node a sahipse, T full binary tree dir dir. Full binary tree de her node aynı yüksekliğe eşit sağ ve sol altağaçlara sahiptir. Yüksekliği 4 olan full binary tree Proper Binary Trees Eğer T ağacının her node u ya hiç child node a sahip değilse veya iki node a sahipse T ağacı proper binary tree olarak adlandırılır. Proper tree Improper tree 7

Complete Binary Trees T, n yükseklikte complete binary tree ise, tüm yaprak node ları n veya n-1 derinliğindedir ve yeni bir derinliğe soldan sağa doğru ekleme başlanır. Her node iki tane child node a sahip olmayabilir. complete incomplete incomplete Heap Herbir node kendi child node larından büyük veya eşittir. Sıralama işlemlerinde kullanılır (Heap Sort). 89 76 80 37 32 39 8

Balanced Binary Trees Yüksekliği ayalanmış ağaçlardır. Bütün node lar için sağ altağacın yüksekliği ile sol altağacın yüksekliği arasında en fazla bir fark varsa balanced binary tree olarak adlandırılır. Complete binary tree ler aynı zamanda balanced binary tree dir. Her balanced binary tree, complete binary tree olmayabilir. 12 8 18 4 5 11 17 Binary Search Trees (İkilik Arama Ağaçları) Herbir node un sağındaki tüm node lar kendisinden büyük ve solundaki tüm node lar kendisinden küçüktür. 6 6 2 8 2 8 1 4 1 4 3 Binary search tree 3 7 Binary tree 9

İkilik Arama Ağacı Oluşturmak class bstnodec public int sayi; public bstnodec leftnode, rightnode; public bstnodec(int sayi, bstnodec leftnode, bstnodec rightnode) this.sayi = sayi; this.leftnode = leftnode; this.rightnode = rightnode; İkilik Arama Ağacında İşlemler Dolaşma (Traverse) Boşaltma (Make Empty) Arama (Find) Ekleme (Append) Silme (Delete) 10

İkilik Arama Ağacında Dolaşma (Traversal) Bir ikilik ağaçta tüm node lar için aynı işlem yapılmak istendiğinde kullanılır. (Örn: Tüm değerleri bir sayıyla çarpmak veya belirli bir kriteri sağlayan değerleri bulmak v.b.) Tüm node ları dolaşmak için bir dolaşma algoritmasına ihtiyaç duyulur. Dolaşma algortimalarında ve recursive yapı kullanılır. Dolaşma algoritmaları genel olarak 4 çeşittir: Preorder (Önce kök) Inorder (Ortada kök) Postorder (Sonra kök) Level order Preorder = ABDGCEHIF Inorder = DGBAHEICF Postorder = GDBHIEFCA Level order = ABCDEFGHI Preorder dolaşma Köke uğra (V) Sol alt ağacı preorder olarak dolaş (L) Sağ alt ağacı preorder olarak dolaş (R) private void preorder(bstnodec node) listbox1.items.add(node.sayi); if (node.leftnode!= null) preorder(node.leftnode); if (node.rightnode!= null) preorder(node.rightnode); 11

Preorder dolaşma (örnek) preorder(a); listbox1.items.add(a); preorder(b); preorder(c); listbox1.items.add(b); preorder(d); preorder(null); listbox1.items.add(d); preorder(null); preorder(null); listbox1.items.add(c); preorder(null); preorder(null); a b d c a private void preorder(bstnodec node) listbox1.items.add(node.harf); if (node.leftnode!= null) preorder(node.leftnode); if (node.rightnode!= null) preorder(node.rightnode); d b c Inorder dolaşma Sol alt ağacı inorder olarak dolaş (L) Köke uğra (V) Sağ alt ağacı inorder olarak dolaş (R) private void inorder(bstnodec node) if (node.leftnode!= null) inorder(node.leftnode); listbox1.items.add(node.sayi); if (node.rightnode!= null) inorder(node.rightnode); 12

Postorder dolaşma Sol alt ağacı postorder olarak dolaş (L) Sağ alt ağacı postorder olarak dolaş (R) Köke uğra (V) private void postorder(bstnodec node) if (node.leftnode!= null) postorder(node.leftnode); if (node.rightnode!= null) postorder(node.rightnode); listbox1.items.add(node.sayi); Dolaşma algoritmaları (örnek expression tree) preorder rder,, (prefix) + * 2 3 / 8 4 inorder rder,, (infix) 2 * 3 + 8 / 4 postorder rder,, (postfix) 2 3 * 8 4 / + levelorder rder, + * / 2 3 8 4 + * / 2 3 8 4 13

Boşaltma (makeempty) private void makeempty(bstnodec node) if (node.leftnode(!= null) makeempty(node.leftnode); if (node.rightnode(!= null) makeempty(node.rightnode); node = null; Arama (find) private void find(int sayi, bstnodec node) if (node.sayi == 0) textbox2.text = "Boş ağaç"; else if ((sayi < node.sayi)&&(node.leftnode!=null)) find(sayi, node.leftnode); else if ((sayi > node.sayi)&&(node.rightnode!=null)) find(sayi, node.rightnode); else if (sayi == node.sayi) textbox2.text = Sayı bulundu"; else textbox2.text = Sayı yok"; 14

Ekleme (append) private void append(int sayi, bstnodec node) bstnodec yeninode = new bstnodec(sayi, null, null); if (node.sayi == 0) node.sayi = sayi; else bstnodec current = node; bstnodec parent; while(true) parent = current; if(sayi < current.sayi) current = current.leftnode; if(current == null) Ekleme (append) - devam else parent.leftnode = yeninode; break; current = current.rightnode; if(current==null) parent.rightnode = yeninode; return; 15

Örnek program: Haftalık Ödev: İkilik binary ağacında minimum ve maksimum değeri bulan metodları yazınız. İkilik binary ağacında lever-order dolaşmayı yapınız. (Kuyruk yapısı kullanılacak) İkilik binary arama ağacında silme işlemini yapınız. 16