algoritma geliştirme ve veri yapıları –...

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

Upload: others

Post on 12-Sep-2019

8 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Algoritma Geliştirme ve Veri Yapıları – 9myo.bartin.edu.tr/akgul/dersler/ybs207/veriyapilari9.pdf · İkili Arama Ağacı Uygulaması • Ağacın herhangi bir düğümünde

Mustafa Kemal Üniversitesi

Algoritma Geliştirme ve Veri Yapıları – 9

Ağaç Veri Modeli ve Uygulaması

Page 2: Algoritma Geliştirme ve Veri Yapıları – 9myo.bartin.edu.tr/akgul/dersler/ybs207/veriyapilari9.pdf · İkili Arama Ağacı Uygulaması • Ağacın herhangi bir düğümünde

Mustafa Kemal Üniversitesi

Ağaç Veri Modeli ve Uygulaması

• Ağaç, verilerin birbirine sanki bir ağaç yapısı oluşturuyormuş gibi sanal olarak bağlanmasıyla elde edilen hiyararşik yapıya sahip bir veri modelidir.

• Kullanım yerleri: o Kodlama/kod çözme işlemleri

o Dosya sistemi

o Oyunların olası hamleleri

o Sıralı verilerin hızlı aranması gibi..

Page 3: Algoritma Geliştirme ve Veri Yapıları – 9myo.bartin.edu.tr/akgul/dersler/ybs207/veriyapilari9.pdf · İkili Arama Ağacı Uygulaması • Ağacın herhangi bir düğümünde

Mustafa Kemal Üniversitesi

Ağaç Veri Modeli ve Uygulaması

• Her ağacın bir kök işaretçisi vardır, herhangi bir düğüm eklenmemiş ise NULL değerini alır.

• Kök işaretçisine bağlı olan düğüm kök(root) olarak adlandırılır, ağaç bunun etrafında serpilir.

• Kendisine hiçbir bağlantı yapılmayan düğümler yaprak(leaf) olarak adlandırılır. Kök ve yaprak dışındaki düğümlere ara düğüm denilir.

• Ağacın herhangi bir dalı kesildiğinde ortaya alt-ağaç çıkar; bir ağaç veya alt-ağaç birçok alt-ağacın birleşmesinden oluşabilir ve alt-ağacın kendisi de ağaç özelliğindedir(rekürsif programlamaya uygundur).

Page 4: Algoritma Geliştirme ve Veri Yapıları – 9myo.bartin.edu.tr/akgul/dersler/ybs207/veriyapilari9.pdf · İkili Arama Ağacı Uygulaması • Ağacın herhangi bir düğümünde

Mustafa Kemal Üniversitesi

Ağaç Veri Modeli ve Uygulaması

• Genel olarak, veri ağacın düğümlerinde tutulur. Dallar ise düğümlerin birbirleriyle bağlantısını gösterir.

• Örnek ağaç üzerindeki kök, A, B ve C düğümlerinin durumu şöyledir:

Page 5: Algoritma Geliştirme ve Veri Yapıları – 9myo.bartin.edu.tr/akgul/dersler/ybs207/veriyapilari9.pdf · İkili Arama Ağacı Uygulaması • Ağacın herhangi bir düğümünde

Mustafa Kemal Üniversitesi

Ağaç Veri Modeli ve Uygulaması

Tanım Düğümler

Kök A B C

Derece/Çocuk 2 1 0 2

Kardeş Düğüm

1 2 1 2

Düzey 1 3 6 3

Aile Yok d2 d26 d3

Ata Yok Kök (d1)

d13, d7, d3, kök

Kök (d1)

Yol (Kök

düğümden)

d1 d1, d2, d4

d1, d3, d7, d13,

d26, d52

d1, d3, d7

Derinlik 1 3 6 3

Yükseklik 6 2 1 4

Page 6: Algoritma Geliştirme ve Veri Yapıları – 9myo.bartin.edu.tr/akgul/dersler/ybs207/veriyapilari9.pdf · İkili Arama Ağacı Uygulaması • Ağacın herhangi bir düğümünde

Mustafa Kemal Üniversitesi

Ağaç Veri Modeli ve Uygulaması

• Ağaç Türleri: o İkili Arama Ağacı: Bir düğüm en fazla iki tane çocuğa

sahip olabilir ve alt/çocuk bağlantıları belirli bir sırada yapılır.

o Kodlama Ağacı: Bir alfabedeki veya daha genel olarak bir kümedeki karakterlere kod atanması için kurulan ağaç şeklidir.

o Sözlük Ağacı: Bir sözlükte bulunan sözcüklerin tutulması için kurulan bir ağaç şeklidir. Amaç, arama işleminin en performanslı bir şekilde yapılmasıdır. Sözlük ağaçları bir araya gelip sözlük ormanını oluşturur.

Page 7: Algoritma Geliştirme ve Veri Yapıları – 9myo.bartin.edu.tr/akgul/dersler/ybs207/veriyapilari9.pdf · İkili Arama Ağacı Uygulaması • Ağacın herhangi bir düğümünde

Mustafa Kemal Üniversitesi

Ağaç Veri Modeli ve Uygulaması

o Kümeleme Ağacı: Bir çeşit sıralama ağacıdır; aslında ikili arama ağacı da sıralama ağacıdır. Ancak kümeleme ağacında çocuk düğümler her zaman aile düğümünden daha küçük değerlere sahip olur(yada tersi olabilir). Dolayısıyla kök düğüm en büyük değere sahip olurken yaprak türleri kendi ailesi içerisinde en küçük değerlere sahip olurlar.

o Bağıntı Ağacı: Bir matematiksel bağıntının ağaç şeklinde tutulması için tanımlanmış bir ikili ağaç uygulamasıdır. Bağıntı ağacının yapraklarda değişkenler veya sabit değerler bulunurken, kök ve ara düğümlerde de işlem değeri olan simgeler(operatörler) bulunur.

Page 8: Algoritma Geliştirme ve Veri Yapıları – 9myo.bartin.edu.tr/akgul/dersler/ybs207/veriyapilari9.pdf · İkili Arama Ağacı Uygulaması • Ağacın herhangi bir düğümünde

Mustafa Kemal Üniversitesi

Ağaç Veri Modeli ve Uygulaması

Ağacın Bellekte Tutulması:

• Ağacın bilgisayar belleğinde tutulması için “indis-bağlantısı” veya “düğüm-bağlantısı” yöntemleri kullanılmaktadır.

• İndis-bağlantısı yaklaşımında ağacın düğümleri bir dizi üzerinde tutulurlar; dizinin ilk elemanı kök olup alt hiyerarşideki diğer düğümlere bir bağlantı uyarınca erişilir.

• İndis-bağlantısı, bir düğümün çocuklarına erişmek için gerekli indisi o andaki aile düğümün indis değerine göre hesaplamada kullanılır. Böylece hiçbir bağlantı bilgisi kullanılmadan bir düğümde onun herhangi bir çocuğuna indis hesabı yapılarak erişilebilir.

• Düğüm-bağlantısı olan yöntemde düğümler arası bağlantılar veri yapısı içerisine eklenmiş olan işaretçi değişkenler aracılığıyla sağlanır.

Page 9: Algoritma Geliştirme ve Veri Yapıları – 9myo.bartin.edu.tr/akgul/dersler/ybs207/veriyapilari9.pdf · İkili Arama Ağacı Uygulaması • Ağacın herhangi bir düğümünde

Mustafa Kemal Üniversitesi

Ağaç Veri Modeli ve Uygulaması

İndis-Bağlantısı Yaklaşımında Veri Yapısı

• Ağacın indis-bağlantısına göre bellekte tutulması düğümlerin veri kısmının bir dizi üzerinde tutulması kavramına dayanır.

• Dizinin ilk elemanı ağacın köküdür. Daha sonraki elemanlar ağaç hiyerarşisi üzerindeki herhangi bir düğüme karşılık düşer. Ancak dizinin ikinci ve üçüncü elemanları kök düğümün çocuklarıdır; daha sonraki, yani dördüncüden sonraki düğümler için ağacın derecesi bilinmelidir.

Page 10: Algoritma Geliştirme ve Veri Yapıları – 9myo.bartin.edu.tr/akgul/dersler/ybs207/veriyapilari9.pdf · İkili Arama Ağacı Uygulaması • Ağacın herhangi bir düğümünde

Mustafa Kemal Üniversitesi

Ağaç Veri Modeli ve Uygulaması

İndis-Bağlantısı Yaklaşımında Veri Yapısı

• İkili ağaç (derecesi 2)

• Indissol(j)=2j+1 Indissag(j)=2j+2

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14

d0 d1 d2 d3 d4 d5 d6 d7 d8 d9 d10 d11 d12 d13 d14

Page 11: Algoritma Geliştirme ve Veri Yapıları – 9myo.bartin.edu.tr/akgul/dersler/ybs207/veriyapilari9.pdf · İkili Arama Ağacı Uygulaması • Ağacın herhangi bir düğümünde

Mustafa Kemal Üniversitesi

Ağaç Veri Modeli ve Uygulaması

Düğüm-Bağlantısı Yaklaşımında Veri Yapısı • Bu yaklaşımda tutulan yol her bir bağlantı için birer

bağlantı bilgisi tutulmasıdır.

struct ikili{ Veri kısmı; İşaretçiTipi sol,sağ; }AGAC2; • İkili ağaç için veri yapısı içerisindeki bilginin yanı sıra 2

adet işaretçi olmalıdır(m-dereceli için m tane işaretçi)

Page 12: Algoritma Geliştirme ve Veri Yapıları – 9myo.bartin.edu.tr/akgul/dersler/ybs207/veriyapilari9.pdf · İkili Arama Ağacı Uygulaması • Ağacın herhangi bir düğümünde

Mustafa Kemal Üniversitesi

Ağaç Veri Modeli ve Uygulaması

Düğüm-Bağlantısı Yaklaşımında Veri Yapısı • MbellekAlanı= sizeof(Veri Yapısı) + sizeof(2 adet bağlantı)

• Bağlantıları tutacak olan işaretçiler 4 Byte ise ikili bir ağaçta 8 Byte sadece bağlantıları göstermek için kullanılır.

Page 13: Algoritma Geliştirme ve Veri Yapıları – 9myo.bartin.edu.tr/akgul/dersler/ybs207/veriyapilari9.pdf · İkili Arama Ağacı Uygulaması • Ağacın herhangi bir düğümünde

Mustafa Kemal Üniversitesi

Ağaç Veri Modeli ve Uygulaması

Huffman Kodlama Ağacı

• Kodlama ağacına dayanılarak değişen uzunluktaki kod ataması, özellikle veri sıkıştırma algoritmalarında kullanılan bir yöntemdir. Bu amaçla Huffman, ShannonFano gibi birçok kodlama ağacı şekli geliştirilmiştir.

• Kodlama tablosunda kod uzunluğu log2N bağıntısından hesaplanır. N=4 için log24=2 bulunur. Genişletilmiş ASCII tablosu için (256 karakter) log2256=8 elde edilir.

Page 14: Algoritma Geliştirme ve Veri Yapıları – 9myo.bartin.edu.tr/akgul/dersler/ybs207/veriyapilari9.pdf · İkili Arama Ağacı Uygulaması • Ağacın herhangi bir düğümünde

Mustafa Kemal Üniversitesi

Ağaç Veri Modeli ve Uygulaması

Huffman Kodlama Ağacı

• Kodlama ağacı karakterlerin kullanım sıklığına göre oluşturulur.

Karakter Kod

A 00

B 01

C 10

D 11

Page 15: Algoritma Geliştirme ve Veri Yapıları – 9myo.bartin.edu.tr/akgul/dersler/ybs207/veriyapilari9.pdf · İkili Arama Ağacı Uygulaması • Ağacın herhangi bir düğümünde

Mustafa Kemal Üniversitesi

Ağaç Veri Modeli ve Uygulaması

• BABACABA karakterlerinin her biri bellekte 8 bitlik yer kaplar, 8x8=64 bit=8 byte.

• Huffman ile elde edilen sonuçlara göz atalım:

A=0, B=10, C=110, D=111 yazılırsa

10 0 10 0 110 0 10 0 olur.

1001001100100 = 13 bit!

• Tablodaki değerlerle yapılmış olsaydı her biri 2 bit olmak üzere 2x8=16 bit=2 byte yer kaplamış olacaktı.

• Yöntem en çok kullanılan elemanın en düşük boyutlu bit ile temsil edilmesi üzerine kurulmuştur.

Page 16: Algoritma Geliştirme ve Veri Yapıları – 9myo.bartin.edu.tr/akgul/dersler/ybs207/veriyapilari9.pdf · İkili Arama Ağacı Uygulaması • Ağacın herhangi bir düğümünde

Mustafa Kemal Üniversitesi

Ağaç Veri Modeli ve Uygulaması

İkili Ağaçlar ve İkili Arama Ağacı

• İkili ağaçlarda bir düğümün derecesi en fazla iki olabilir, yani en fazla iki tane çocuk bağlantısı olabilir.

• İkili arama ağacına bir düğüm eklenirken ağacın soluna mı, sağına mı ekleme yapılacağı düğümün veri alanı içerisindeki anahtar sözcüğe bakılarak yapılır. Bu konudaki genel yaklaşım, anahtar veri aile düğümünden küçük ise soluna büyük ise sağına eklemektir. Eğer anahtar veri sözce(string) ise alfabetik olarak önce geliyorsa soluna, sonra geliyorsa sağına eklenir.

Page 17: Algoritma Geliştirme ve Veri Yapıları – 9myo.bartin.edu.tr/akgul/dersler/ybs207/veriyapilari9.pdf · İkili Arama Ağacı Uygulaması • Ağacın herhangi bir düğümünde

Mustafa Kemal Üniversitesi

Ağaç Veri Modeli ve Uygulaması

• Bağıntı ağaçları da ikili ağaç şeklindedir; bağıntı ağacında amaç bir matematiksel bağıntıya ait operatör, değişken ve sabitleri bağıntıyı ifade edecek şekilde ikili ağaç üzerinde tutmaktır.

• İkili ağaçtaki bir düğüme ait veri yapısında veriye ek olarak iki tane işaretçi tutulur; biri sol diğeri sağ olarak adlandırılan bu işaretçilere düğümün çocukları bağlanır.

Page 18: Algoritma Geliştirme ve Veri Yapıları – 9myo.bartin.edu.tr/akgul/dersler/ybs207/veriyapilari9.pdf · İkili Arama Ağacı Uygulaması • Ağacın herhangi bir düğümünde

Mustafa Kemal Üniversitesi

Ağaç Veri Modeli ve Uygulaması

Page 19: Algoritma Geliştirme ve Veri Yapıları – 9myo.bartin.edu.tr/akgul/dersler/ybs207/veriyapilari9.pdf · İkili Arama Ağacı Uygulaması • Ağacın herhangi bir düğümünde

Mustafa Kemal Üniversitesi

Ağaç Veri Modeli ve Uygulaması

Page 20: Algoritma Geliştirme ve Veri Yapıları – 9myo.bartin.edu.tr/akgul/dersler/ybs207/veriyapilari9.pdf · İkili Arama Ağacı Uygulaması • Ağacın herhangi bir düğümünde

Mustafa Kemal Üniversitesi

Ağaç Veri Modeli ve Uygulaması

İkili Ağaç Üzerinde Dolaşma

• İkili ağaç üzerinde önce-kök(preorder), ortada-kök(inorder) ve sonra-kök(postorder) olmak üzere üç farklı dolaşma şekli uygulamalara çözüm olmaktadır.

Önce-Kök: PAPATYA

Ortada-Kök: PAAPYTA

Sonra-Kök: PAAYATP

Page 21: Algoritma Geliştirme ve Veri Yapıları – 9myo.bartin.edu.tr/akgul/dersler/ybs207/veriyapilari9.pdf · İkili Arama Ağacı Uygulaması • Ağacın herhangi bir düğümünde

Mustafa Kemal Üniversitesi

Ağaç Veri Modeli ve Uygulaması

o Önce-Kök(preorder): Kök, Sol, Sağ

o Ortada-Kök(inorder): Sol, Kök, Sağ

o Sonra-Kök(Postorder): Sol, Sağ, Kök

• Önce-kök yaklaşımında önce ağacın kökü, sonra sol altağaç ve ardından sağ altağaç

• Ortada-kökte ise, önce sol altağaç, kök ve sağ altağaç

• Sonra-kökta ise, önce sol altağaç, sonra sağ altağaç ve kök dolaşılır.

Page 22: Algoritma Geliştirme ve Veri Yapıları – 9myo.bartin.edu.tr/akgul/dersler/ybs207/veriyapilari9.pdf · İkili Arama Ağacı Uygulaması • Ağacın herhangi bir düğümünde

Mustafa Kemal Üniversitesi

Ağaç Veri Modeli ve Uygulaması

Önce-Kök Sonra-Kök

Ortada-Kök

Page 23: Algoritma Geliştirme ve Veri Yapıları – 9myo.bartin.edu.tr/akgul/dersler/ybs207/veriyapilari9.pdf · İkili Arama Ağacı Uygulaması • Ağacın herhangi bir düğümünde

Mustafa Kemal Üniversitesi

Ağaç Veri Modeli ve Uygulaması

Page 24: Algoritma Geliştirme ve Veri Yapıları – 9myo.bartin.edu.tr/akgul/dersler/ybs207/veriyapilari9.pdf · İkili Arama Ağacı Uygulaması • Ağacın herhangi bir düğümünde

Mustafa Kemal Üniversitesi

Ağaç Veri Modeli ve Uygulaması

Bağıntı Ağaçları

Page 25: Algoritma Geliştirme ve Veri Yapıları – 9myo.bartin.edu.tr/akgul/dersler/ybs207/veriyapilari9.pdf · İkili Arama Ağacı Uygulaması • Ağacın herhangi bir düğümünde

Mustafa Kemal Üniversitesi

Ağaç Veri Modeli ve Uygulaması

Bağıntı Ağaçları

• Bir matematiksel bağıntının ağaç şeklinde tutulması için tanımlanmış bir ikili ağaç uygulamasıdır. Birçok derleyici, program içerisindeki denklemleri, bağıntı ağacı aracılığıyla ayrıştırır ve karşılığı olan kodları üretir.

• Bağıntı ağacı üç farklı yöntem ile çıkarılabilir: iç-takı, ön-takı ve son-takı.

Page 26: Algoritma Geliştirme ve Veri Yapıları – 9myo.bartin.edu.tr/akgul/dersler/ybs207/veriyapilari9.pdf · İkili Arama Ağacı Uygulaması • Ağacın herhangi bir düğümünde

Mustafa Kemal Üniversitesi

Ağaç Veri Modeli ve Uygulaması

• İç-takı (İnfix)

Bağıntı ağacının iç-takı yöntemine göre değerlendirilmesi, bir önceki sayfada verilen örneklerde görüldüğü gibi, matematikte alışılagelen şekilde, operatörlerin ortada, değişken veya sabit değerlerin operatörün kenarlarında bulunması şeklinde yapılır. Değerlendirmeye iki çocuğu da yaprak (yani parametreleri hazır; işleme hazır) olan en soldaki altağaçtan başlanır ve sağa doğru, sırasıyla, yine çocukları yaprak olan altağaçlar ele alınarak bağıntı değerlendirilir.

• Ön-takı (Prefix) ve Polonyalı Notasyonu

Ön-takı yönteminde operatörler kendilerine karşı düşen parametrelerin (değişken veya sabit değerler) önündedir. Ön-takı yöntemi ikili ağaç üzerinde önce-kök dolaşması gibidir.

• Son-takı (Postfix)

Son-takı yöntemi ters Polonyalı notasyonu (reverse Polish notation) olarak da adlandırılır ve operatörler kendi parametrelerinin arkasından gelir. Ön-takı ve son-takı yönteminin en önemli özelliği bağıntıların parantez kullanılmadan gösterilebilmesidir.

Page 27: Algoritma Geliştirme ve Veri Yapıları – 9myo.bartin.edu.tr/akgul/dersler/ybs207/veriyapilari9.pdf · İkili Arama Ağacı Uygulaması • Ağacın herhangi bir düğümünde

Mustafa Kemal Üniversitesi

Ağaç Veri Modeli ve Uygulaması

İkili Arama Ağacı

• İkili arama ağaçları arama işleminin yoğun olduğu uygulamalarda ilk başvurulan veri modelleridir; arama işleminde kullanılacak anahtar sözcüğe bağlı olarak bir veya birden fazla ikili arama ağacı kurularak arama işlemi logN mertebesinde yapılır.

Page 28: Algoritma Geliştirme ve Veri Yapıları – 9myo.bartin.edu.tr/akgul/dersler/ybs207/veriyapilari9.pdf · İkili Arama Ağacı Uygulaması • Ağacın herhangi bir düğümünde

Mustafa Kemal Üniversitesi

Ağaç Veri Modeli ve Uygulaması

6 eklenmesi

38 eklenmesi

11 eklenmesi

Page 29: Algoritma Geliştirme ve Veri Yapıları – 9myo.bartin.edu.tr/akgul/dersler/ybs207/veriyapilari9.pdf · İkili Arama Ağacı Uygulaması • Ağacın herhangi bir düğümünde

Mustafa Kemal Üniversitesi

Ağaç Veri Modeli ve Uygulaması

İkili Arama Ağacı Uygulaması • Ağacın herhangi bir düğümünde bir tamsayı ve bir de 100

karakterlik bir mesaj tutulacaktır, bunlara ek olarak biri sağ diğeri sol olmak üzere iki adet işaretçiye de sahip olmalıdır. Böyle bir düğümün veri yapısı;

struct topluluk{ int bilgi; char mesaj[100]; struct topluluk *sol,*sag; }AGAC2; AGAC2 *kok=NULL;

AGAC2

bilgi mesaj sol sag

Page 30: Algoritma Geliştirme ve Veri Yapıları – 9myo.bartin.edu.tr/akgul/dersler/ybs207/veriyapilari9.pdf · İkili Arama Ağacı Uygulaması • Ağacın herhangi bir düğümünde

Mustafa Kemal Üniversitesi

Ağaç Veri Modeli ve Uygulaması

• Bu aşamada bir ikili ağaç oluşmuş olur. Ancak içerisinde hiçbir düğüm yoktur. İlk yapılacak işlem ağaca düğüm ekleyecek algoritmanın tasarlanmasıdır. Bunun içinde her şeyden önce sıralamada kullanılacak olan anahtar sözcüğün belirlenmesidir. Bu örnekte, türü tamsayı olan bilgi adlı değişken anahtar veri olarak seçilmiştir. Dolayısıyla ikili ağaç üzerindeki ekleme, silme, arama gibi işlemler bu anahtar sözcük üzerinden gerçekleştirilecektir.

Page 31: Algoritma Geliştirme ve Veri Yapıları – 9myo.bartin.edu.tr/akgul/dersler/ybs207/veriyapilari9.pdf · İkili Arama Ağacı Uygulaması • Ağacın herhangi bir düğümünde

Mustafa Kemal Üniversitesi

Ağaç Veri Modeli ve Uygulaması

/* Düğüm Ekleme Fonksiyonu */ void ekle(AGAC2 *agacKok, AGAC2 *eklenen) { if(agacKok==NULL) kok=eklenen; else { if(eklenen->bilgi <= agacKok->bilgi) { if(agacKok->sol==NULL) agacKok->sol=eklenen; else ekle(agacKok->sol, eklenen); } else { if(agacKok->sag==NULL) agacKok->sag=eklenen; else ekle(agacKok->sag, eklenen); } } }

Page 32: Algoritma Geliştirme ve Veri Yapıları – 9myo.bartin.edu.tr/akgul/dersler/ybs207/veriyapilari9.pdf · İkili Arama Ağacı Uygulaması • Ağacın herhangi bir düğümünde

Mustafa Kemal Üniversitesi

Ağaç Veri Modeli ve Uygulaması

/* Listedeki tüm kayıtları listeleme */ void listele(AGAC2 *agacKok) { if(agacKok=!NULL) { listele(agacKok->sol); yazEkrana(agacKok); listele(agacKok->sag); } }

/* Ağaç üzerinde bir kayıt arama */ AGAC2 *ara(AGAC2 *agacKok, int aranan) { while(agacKok!=NULL && agacKok->bilgi!=aranan) { if(aranan <= agacKok->bilgi) agacKok=agacKok->sol; else agacKok=agacKok->sag; } return agacKok; }

Page 33: Algoritma Geliştirme ve Veri Yapıları – 9myo.bartin.edu.tr/akgul/dersler/ybs207/veriyapilari9.pdf · İkili Arama Ağacı Uygulaması • Ağacın herhangi bir düğümünde

Mustafa Kemal Üniversitesi

Ağaç Veri Modeli ve Uygulaması

7’nin Çıkarılması

5’in Çıkarılması

23’ün Çıkarılması

Page 34: Algoritma Geliştirme ve Veri Yapıları – 9myo.bartin.edu.tr/akgul/dersler/ybs207/veriyapilari9.pdf · İkili Arama Ağacı Uygulaması • Ağacın herhangi bir düğümünde

Mustafa Kemal Üniversitesi

Ağaç Veri Modeli ve Uygulaması

/* İkili ağaç üzerindeki düğüm sayısını sayar*/ int sayAgacDugum(AGAC2 *agacKok, int miktar)

{

if(agacKok==NULL) return miktar;

miktar++;

miktar=sayAgacDugum(agacKok->sol, miktar);

miktar=sayAgacDugum(agacKok->sag, miktar);

return miktar;

}