Pages

Stop Exploitasi Hutan Indonesia!

Kamis, 03 Januari 2013

Laporan Praktikum Struktur Data Modul 7


LAPORAN PRAKTIKUM
STRUKTUR DATA
MODUL  7




Oleh :
TRI WIJAYANTO
115410126
TI / S1


SEKOLAH TINGGI MANAJEMEN INFORMATIKA DAN KOMPUTER
AKAKOM
Yogyakarta
2012

MODUL 7
POHON

A.     PEMBAHASAN

class simpul
{ public
  String elemen;
  simpul kiri;
  simpul kanan;
  public void ngisiElemen(String ELEMEN)
  {
     elemen = ELEMEN;  
     }
}

Potongan program dia atas merupakan sebuah kelas dengan nama simpul, didalam kelas tersebut terdapat tipe data String dengan nama elemen, simpul kiri dan simpulkan kanan. Terdapat pula sebuah method dengan nama ngisiElemen yang dikerjakan pada dengan tipe data String yang dengan nama variabelnya ELEMEN. Dan method tersebut bersifat public sehingga dapat diakses semua method yang ada pada program ini.

class pohon
{ public
          simpul akar;
  public void deklarasiPohon()
  { akar = null;
}
Sedangkan pada potongan program di atas merupakan sebuah kelas dengan nama pohon, yang mana di dalam kelas tersebut hanya terdiri simpulkan akar, dan memiliki method dengan nama deklarasiPohon, yang bersifat public dan menyatakan pula bahwa akar sama dengan null.
  simpul tambahSimpul(simpul Petunjuk, String ELEMEN)
  { if (Petunjuk == null)
    { simpul baru = new simpul();
      baru.ngisiElemen(ELEMEN);
      baru.kiri = null;
      baru.kanan = null;
      Petunjuk = baru;
      return(Petunjuk);
    } 

program di atas merupakan sebuah method dengan nama tambahSimpul,dengan variable petunjuk dan ELEMENT. Menggunakan pernyataan if yaitu jika penunjuk sama dengan null, berarti node dalam keadaan kosong.  Sehinga sebuah objek baru di ciptakan,  yaitu dengan nama baru .Maka simpul baru akan masuk dalam pohon dengan perintah atau method ngisiElemen, sehingga simpul baru masuk maka simpul tersebut akan menjadi ELEMEN atau simpul dalam pohon. Saat elemen atau simpul tersebut sudah masuk dalam pohon, maka terdapat satu simpul/node, dan simpul/elemen tersebut pada sisi kiri dari simpul tersebut bernilai null, dan pada sisi kanannya pula akan bernilai null, dan simpul tersebut akan menjadi penunjuk dalam pohon.

  else
    {
     if (ELEMEN.compareTo(Petunjuk.elemen) < 0)
      {
           Petunjuk.kiri = tambahSimpul(Petunjuk.kiri, ELEMEN);
           return(Petunjuk);
Lanjutan dari perintah If di atas, jika penunjuk tidak sama dengan null, maka dihadapkan pula dalam sebuah kondisi. jika ELEMEN dibandingkan dengan petunjuk elemen dan hasilnya lebih kecil dari nol (0), maka akan dikerjakan perintah selanjutnya yiatu petunjuk kekiri sama dengan melakukan tambah simpul, dan simpul penunjuk akan ke kiri dari ELEMEN. Dan akan dilakukan nilai pengembalian penunjuk tersebut sepeti semula. jika elemen atau simpul yang akan masuk dalam pohon dibandingkan dengan petunjuk simpul lebih kecil,maka akan berada pada posisi kiri dari penunjuk tersebut, dan akan dikembalikan lagi nilai penunjuk seperti semula.

      }     
     else
      {
           Petunjuk.kanan = tambahSimpul(Petunjuk.kanan, ELEMEN);
           return(Petunjuk);     
           }
      }
  }

Sedangkan jika pernyataan sebelumnya tidak terpenuhi, maka penunjuk ke kanan sama dengan melakukan tambah simpul petunjuk kekanan untuk menjadikan eleman atau simpul dalam pohon, maka setalah perintah tersebut telah dilakukan, akan dikerjakan nilai pengembalian petunjuk seperti semula

  void preOrder(simpul Penunjuk)
  {
     if (Penunjuk != null)
    {
      System.out.print(Penunjuk.elemen + ",");
      preOrder(Penunjuk.kiri);
      preOrder(Penunjuk.kanan);   
     }
  }

Method dengan nama PreOrder yang merupakan simpul penunjuk. jika simpul penunjuk  tidak sama dengan null, maka element pun dicetak. Kemudian preOrder(Penunjuk.kiri); dimulai dari kiri,yang menyatakan bahwa simpul penunjuk akan ke kiri hingga penunjuk bernilai null, maka tidak dikerjakan. Kemudian akan berpindah pada preOrder(Penunjuk.kanan); untuk dikerjakan.

  void inOrder(simpul Penunjuk)
  {
     if (Penunjuk != null)
    {
        inOrder(Penunjuk.kiri);
        System.out.print(Penunjuk.elemen + ",");
        inOrder(Penunjuk.kanan);   
     }
  }

Merupakan Method inOrder dengan menggunakan simpul penunjuk sebagai penelusuran dalam pohon. Didalam method ini terdapat sebuah kondisi jika penunjuk tidak sama dengan null, maka dikerjakan perintah inOrder(Penunjuk.kiri);,berarti node dibaca dari kiri.Dan kemudian elemen akan dicetak dengan perintah:  System.out.print(Penunjuk.elemen + ",");,Dan setelah dicetak, maka yang akan dikerjakan selanjutnaya adalah membaca node pohon ke kanan, dengan perintah  inOrder(Penunjuk.kanan);.

  void postOrder(simpul Penunjuk)
  {
     if (Penunjuk != null)
    {
     postOrder(Penunjuk.kiri);
     postOrder(Penunjuk.kanan);
     System.out.print(Penunjuk.elemen + ",");   
     }
  }
}

Method postOrder dengan menggunakan simpul penunjuk juga sebagai penelusuran dalam pohon. postOrder postOrder(Penunjuk.kiri);,membaca node pohon yang dimulai dari kiri, kemudian akan dikerjakan perintah postOrder(Penunjuk.kanan);,yang mana simpul penunjuk akan dibaca dari kanan, setelah dilakukan kunjungan pada node dalam pohon dari kiri, maka selanjutnya pada program ini, akan dilakukan ke kanan. Setelah itu,

System.out.print(Penunjuk.elemen + ",");      à    merupakan perintah untuk mencetak element.

public class ProgramPohonBiner { à nama kelas
    public static void main(String[] args) {
        pohon PohonBiner = new pohon();

potongan program diatas merupakan class utama/main class dari program Pohon Biner ini. Dengan menciptakan objek pohon yang baru dan aka dihasilkan output dengan perintah dibawah ini :

        PohonBiner.deklarasiPohon();
   PohonBiner.akar =PohonBiner.tambahSimpul(PohonBiner.akar, "M");
   PohonBiner.akar =PohonBiner.tambahSimpul(PohonBiner.akar, "P");
   PohonBiner.akar =PohonBiner.tambahSimpul(PohonBiner.akar, "D");
   PohonBiner.akar =PohonBiner.tambahSimpul(PohonBiner.akar, "A");
   PohonBiner.akar =PohonBiner.tambahSimpul(PohonBiner.akar, "S");
   PohonBiner.akar =PohonBiner.tambahSimpul(PohonBiner.akar, "K");
   PohonBiner.akar =PohonBiner.tambahSimpul(PohonBiner.akar, "N");
     PohonBiner.akar =PohonBiner.tambahSimpul(PohonBiner.akar, "G");
     PohonBiner.akar =PohonBiner.tambahSimpul(PohonBiner.akar, "O");
     PohonBiner.akar =PohonBiner.tambahSimpul(PohonBiner.akar, "L");
     PohonBiner.akar =PohonBiner.tambahSimpul(PohonBiner.akar, "W");
   PohonBiner.akar =PohonBiner.tambahSimpul(PohonBiner.akar, "F");
   PohonBiner.akar =PohonBiner.tambahSimpul(PohonBiner.akar, "J");
   PohonBiner.akar =PohonBiner.tambahSimpul(PohonBiner.akar, "T");
     PohonBiner.akar =PohonBiner.tambahSimpul(PohonBiner.akar, "H");
     PohonBiner.akar =PohonBiner.tambahSimpul(PohonBiner.akar, "U");

Terdapat 16 simpul yang akan masuk ke dalam pohon, dengan simpul pertama akan menjadi root dalam pohon. Dari data atau simpul/elemen di atas, dapat diketahui bahwa yang menjadi root adalah M. Kemuadian semua simpul akan dikerjakan dengan perintah tambah simpul, dan dilihat letak posisinya yang aka dibandingkan dengan penunjuk simpul.
Dari perintah simpul/elemen tersebut adalah dapat dicontohkan salah satu :
PohonBiner.akar =PohonBiner.tambahSimpul(PohonBiner.akar, "M"); // simpul dalam pohon biner akan menjadi akar sama dengan pohon biner akan melakukan tambah simbul di dalam pohon, dan huruf atau simpul yang ada diantara petik dua akan amsuk ke dalam pohon biner dan akan menjadi akar. Maka dari 16 simpul tersebut akan ada 16 akar yang akan masuk dalam pohon biner. 16 simpul tersebut dapat dikerjakan dengan menggunakan preOrder, seperti berikut :

PohonBiner.preOrder(PohonBiner.akar);   
     }
}


B.               TUGAS
Tidak ada karena asisten tidak memberikan tugas pada saat praktikum modul 7

C.     LISTING TERLAMPIR