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