13
Trees, Vectors, Iterators

Trees, Vectors, Iterators

Embed Size (px)

DESCRIPTION

Trees, Vectors, Iterators. ADT. Abstract Data Type (ADT) vs implementation -Soyut Veri Türleri -Uygulamaları. Ağaçlar ( Trees ). Listelerde olduğu gibi ağaçlar da birçok elemandan (Node) oluşur. - PowerPoint PPT Presentation

Citation preview

Page 1: Trees, Vectors, Iterators

Trees, Vectors, Iterators

Page 2: Trees, Vectors, Iterators

ADT

• Abstract Data Type (ADT) vs implementation-Soyut Veri Türleri -Uygulamaları

Page 3: Trees, Vectors, Iterators

Ağaçlar (Trees)• Listelerde olduğu gibi ağaçlar da birçok

elemandan (Node) oluşur.• Yaygın bir ağaç şekli ikili ağaçlardır (Binary Trees).

Bu ağaçlarda herbir eleman diğer iki elemana referans taşır.

public class Agac { Object veri; Agac sol, sag;

}

Page 4: Trees, Vectors, Iterators

• Ağacın tepesi kök, diğer elemanlar dal, null referans taşıyan elemanlar ise yaprak olarak adlandırılır.

Page 5: Trees, Vectors, Iterators

• Kurucu metod public Agac(Object veri, Agac sol, Agac sag) {

this.veri = veri; this.sol = sol; this.sag = sag;}

• Önce çocuk elemanları oluşturalım:– Agac sol = new Agac (new Integer(2), null, null);

Agac sag = new Agac (new Integer(3), null, null); • Kök elemanın oluşturulması:– Agac agac = new Agac (new Integer(1), sol, sag);

Page 6: Trees, Vectors, Iterators

Özyineleme metoduyla ağaç elemanlarına ulaşılması

public static int total (Agac agac) { if (agac == null) return 0; Integer veri = (Integer) agac.veri; return veri.intValue() + total (agac.sol) +

total (agac.sag); }

Page 7: Trees, Vectors, Iterators

İfade ağaçları (Expression Trees)

• 1 + 2 * 3• Çarpma işleminin

toplama işleminden önce yapılacağı bilinmezse bu işlemin sonucu belirsizdir.

Page 8: Trees, Vectors, Iterators

Ağaçların yazdırılması

• Ağacın kökünden başlamak üzere elemanlarını yazdırma: – public static void print (Agac agac) {

if (agac == null) return; System.out.print (agac + " "); print (agac.sol); print (agac.sag); }

+ 1 * 2 3

Page 9: Trees, Vectors, Iterators

• Önce dalların sonra kök elemanın yazdırılması: public static void printPostorder (Agac agac) {

if (agac == null) return; printPostorder (agac.sol); printPostorder (agac.sag); System.out.print (agac + " "); }

1 2 3 * +

Page 10: Trees, Vectors, Iterators

• Önce sol, sonra kök sonra da sağ ağacın yazdırılması:

public static void printInorder (Agac agac) { if (agac == null) return; printInorder (agac.sol); System.out.print (agac + " "); printInorder (agac.sag); } 1 + 2 * 3

Page 11: Trees, Vectors, Iterators

Vector Class

• Vector Sınıfı dinamik olarak boyut değiştirebilen Object dizisi işlevi görür.

• Size vektörün tuttuğu eleman sayısını• Capacity vektörün işgal ettiği yeri gösterir• v.add(Object o): eleman ekleme• v.get(index): herhangi bir indexteki elemanı

alma. Geriye Object döndürür

Page 12: Trees, Vectors, Iterators

Iterators

Iterator iterator = v.iterator (); while (iterator.hasNext ()) { System.out.println (iterator.next ()); } ListIterator iter = v.listIterator(); while (iter.hasNext()) { System.out.println((String)iter.next()); }

Page 13: Trees, Vectors, Iterators