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. 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; }
Ağacın tepesi kök, diğer elemanlar dal, null referans taşıyan elemanlar ise yaprak olarak adlandırılır.
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);
Ö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); }
İfade ağaçları (Expression Trees) * 3 Çarpma işleminin toplama işleminden önce yapılacağı bilinmezse bu işlemin sonucu belirsizdir.
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
Ö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 + " "); } * +
Ö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); } * 3
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
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()); }