130 likes | 272 Views
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.
E N D
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; Agacsol, 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ı: • Agacagac = 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) • 1 + 2 * 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 (Agacagac) { 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 (Agacagac) { if (agac == null) return; printPostorder (agac.sol); printPostorder (agac.sag); System.out.print (agac + " "); } 1 2 3 * +
Önce sol, sonra kök sonra da sağ ağacın yazdırılması: public static void printInorder (Agacagac) { if (agac == null) return; printInorder (agac.sol); System.out.print (agac + " "); printInorder (agac.sag); } 1 + 2 * 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()); }