Anda di halaman 1dari 13

Laporan Praktikum Algoritma &

Struktur Data
Modul [4]
[BINARY TREE & BINARY SEARCH
TREE (BST)]
Daftar Isi :
Pengampu :
[Nur Hayatin SST]

1. Deskripsi Praktikum
2. Perangkat Lunak
3. Teori Penunjang
4. Prosedur Pelaksanaan

Nama:

5. Implementasi dan Hasil Praktikum


6. Kesimpulan

[027] [Widya Nengsi Purnomo]

Dokumen Laboratorium Teknik Informatika UMM @ 2016 Laporan Modul Praktikum Algoritma

By. [NIM] [Nama]

dan Struktur Data

Daftar Isi
1. Deskripsi Praktikum .......................................................................................................... 3
2. Perangkat Lunak ............................................................................................................... 3
3. Teori Penunjang ................................................................................................................. 3
4. Prosedur Pelaksanaan ....................................................................................................... 3
5. Hasil Soal Latihan dan penjelasan.....14
6. Implementasi dan Hasil Praktikum ................................................................................. 3
7. Kesimpulan ....................................................................................................................... 13

Dokumen Laboratorium Teknik Informatika UMM @ 2016 Laporan Modul Praktikum Algoritma

By. [NIM] [Nama]

dan Struktur Data

1. Deskripsi Praktikum
Mahasiswa mampu :
1. Memahami struktur pohon tree sebagai model penyimpanan data.
2. Memahami cara menyimpan dan mengakses elemen dari sebuah struktur pohon
biner.
3. Memahami struktur pohon biner dalam versi linked list.
4. Memahami operasi-operasi standar yang terkait dengan pohon biner.
2. Perangkat Lunak
Editor java (Netbeans dan JDK)
3. Teori Penunjang
1. Tree adalah kumpulan element yang saling terhubung secara hirarki (one to
many). Tree terdiri dari root (akar), path (cabang), dan leaf (daun). Element pada
tree yaitu berupa node. Sebuah node hanya boleh memiliki satu induk/parent.
Kecuali root, tidak memiliki induk/parent. Setiap node dapat memiliki nol atau
banyak cabang anak (one to many). Node yang tidak memiliki cabang anak
disebut daun.
2. Root (Node Root) adalah node yang memiliki hirarki tertinggi, yang pertama kali
dibentuk sehingga tidak memiliki parent (node induk). Penelusuran path tiap node
dimulai dari root. Subtree adalah node-node lain dibawah root yang saling
terhubung satu sama lain secara hirarki.
3. Path merupakan percabangan dari satu node ke node lainnya. Setiap node dapat
memiliki lebih dari satu cabang node atau tidak sama sekali memiliki cabang.
4. Leaf adalah node pada tree yang terletak pada pangkal dan tidak memiliki cabang
ke element node lainnya. Dalam artian leaf terdapat pada hirarki terbawah pada
sebuah tree.

4. Prosedur Pelaksanaan
Prosedur pelaksanaan praktikum adalah sebagai berikut :
1. Mahasiswa mencoba latihan yang ada pada modul praktikum
2. Mahasiswa menganalisa hasil dari program pada latihan yang telah dijalankan
3. Mahasiswa mengerjakan tugas yang diberikan
4. Mahasiswa mendemonstrasikan program yang telah dikerjakan pada dosen/assisten
5. Mahasiswa membuat laporan dari tugas yang telah dikerjakan
6. Upload laporan melalui e-labit.umm.ac.i
5. Implementasi dan Hasil Praktikum

Dokumen Laboratorium Teknik Informatika UMM @ 2016 Laporan Modul Praktikum Algoritma

By. [NIM] [Nama]

dan Struktur Data

Tugas 1
package modul4;
public class ABTree {
// data members
static Object [] a; // array that contains the tree
static int last=0; // position of last element in array a
static int size=0;
/** visit method that prints the element in a[i] */
public static void visit(int i)
{
System.out.print(a[i] + " ");
}
/** inorder traversal */
public static void inOrder(Object [] theArray, int theLast)
{
// set static data members
a = theArray;
last = theLast;
if(!isEmpty())
{
// start the recursive traversal method at the root
theInOrder(1);
}
else
System.out.println("Binary Tree Kosong");
}
/** actual method to do the inorder traversal */
static void theInOrder(int i)
{// traverse subtree rooted at a[i]
if (i <= last && a[i]!=null)
{// root exists
theInOrder(2 * i); // do left subtree
visit(i); // visit tree root
theInOrder(2 * i + 1); // do right subtree
}
}
Dokumen Laboratorium Teknik Informatika UMM @ 2016 Laporan Modul Praktikum Algoritma

By. [NIM] [Nama]

dan Struktur Data

static boolean isEmpty()


{
return (size==0);
}
static void addNode(int i, int isi)
{
a[i] = new Integer(isi);
size++;
last = i;
}
public static void preOrder(Object [] theArray, int theLast)
{
// set static data members
a = theArray;
last = theLast;
if(!isEmpty())
{
// start the recursive traversal method at the root
thePreOrder(1);
}
else
System.out.println("Binary Tree Kosong");
}
static void thePreOrder(int i)
{// traverse subtree rooted at a[i]
if (i <= last && a[i]!=null)
{// root exists
visit(i); // visit tree root
thePreOrder(2*i); // do left subtree
thePreOrder(2 * i +1); // do right subtree
}
}
public static void postOrder(Object [] theArray, int theLast)
{
// set static data members
Dokumen Laboratorium Teknik Informatika UMM @ 2016 Laporan Modul Praktikum Algoritma

By. [NIM] [Nama]

dan Struktur Data

a = theArray;
last = theLast;
if(!isEmpty())
{
// start the recursive traversal method at the root
thePostOrder(1);
}
else
System.out.println("Binary Tree Kosong");
}
static void thePostOrder(int i)
{// traverse subtree rooted at a[i]
if (i <= last && a[i]!=null)
{// root exists
thePostOrder(2*i); // do left subtree
thePostOrder(2 * i +1); // do right subtree
visit(i); // visit tree root
}
}
public static void main(String[] args) { // method main
a = new Integer [10];
ABTree out = new ABTree();
out.addNode(1, 3);
out.addNode(2, 6);
out.addNode(3, 10);
out.addNode(4, 4);
out.addNode(5, 9);
out.addNode(6, 7);
out.addNode(8, 11);
System.out.print("inOrder

:"); out.inOrder(a, last);

System.out.println();
System.out.print("preOrder

:"); out.preOrder(a, last);

System.out.println();
System.out.print("postOrder

:"); out.postOrder(a, last);

Dokumen Laboratorium Teknik Informatika UMM @ 2016 Laporan Modul Praktikum Algoritma

By. [NIM] [Nama]

dan Struktur Data

System.out.println();
//preoder dibaca atas kiri kanan contoh abc
//inoder dibaca kiri atas kanan bac
// potoder kiri kanan atas bca
}
}

Tugas 2
package modul4;
import java.util.*;

public class ArrayBinarySearchTree {


static String[] a;
static int last;
public static void visit(int i) {
if (a[i] != null) {
System.out.print(a[i] + ", ");
}
}
public static void visit1(int i) {
visit(4 * i - 2);
visit(4 * i - 1);
visit(4 * i);
visit(4 * i + 1);
}

Dokumen Laboratorium Teknik Informatika UMM @ 2016 Laporan Modul Praktikum Algoritma

By. [NIM] [Nama]

dan Struktur Data

public static void menu1(int anak, String ibu, String[]


theArray, int theLast) {
a = theArray;
last = theLast;
int i = 0;
for (int a = 1; a <= last; a++) {
if (ibu.equalsIgnoreCase(theArray[a])) {
i = a;
}
}
if (anak == 1) {
visit(4 * i - 2);
} else if (anak == 2) {
visit(4 * i - 1);
} else if (anak == 3) {
visit(4 * i);
} else if (anak == 4) {
visit(4 * i + 1);
}
}
public static void menu2(String anak, String[] theArray,
int theLast) {
try {
a = theArray;
last = theLast;
// int i = 0;
for (int a = 1; a <= last; a++) {
if (theArray[a] != null) {
if (anak.equalsIgnoreCase(theArray[4 * a
- 2])) {
visit(a);
} else if
(anak.equalsIgnoreCase(theArray[4 * a - 1])) {
visit(a);
} else if
(anak.equalsIgnoreCase(theArray[4 * a])) {
Dokumen Laboratorium Teknik Informatika UMM @ 2016 Laporan Modul Praktikum Algoritma

By. [NIM] [Nama]

dan Struktur Data

visit(a);
} else if
(anak.equalsIgnoreCase(theArray[4 * a + 1])) {
visit(a);
}
}
}
} catch (Exception e) {
}
}
public static void menu3(String ibu, String[] theArray,
int theLast) {
try {
a = theArray;
last = theLast;
int i = 0;
for (int a = 1; a <= last; a++) {
if (ibu.equalsIgnoreCase(theArray[a])) {
visit1(a);
}
}
} catch (Exception e) {
}
}
public static void menu4(String ibu, String[] theArray,
int theLast) {
try {
a = theArray;
last = theLast;
int i = 0;
int temp;
for (int a = 1; a <= last; a++) {
if (ibu.equalsIgnoreCase(theArray[a])) {
temp = 4 * a - 2;
visit1(temp);
temp = 4 * a - 1;
visit1(temp);
temp = 4 * a;
Dokumen Laboratorium Teknik Informatika UMM @ 2016 Laporan Modul Praktikum Algoritma

By. [NIM] [Nama]

dan Struktur Data

visit1(temp);
temp = 4 * a + 1;
visit1(temp);
}
}
} catch (Exception e) {
}
}
public static void menu5(String[] theArray, int theLast)
{
a = theArray;
last = theLast;
for (int a = 1; a <= last; a++) {
visit(a);
}
}
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
boolean kondisi = true;
String a[] = new String[85];
a[1] = new String("siti");
a[2] = new String("nina");
a[3] = new String("budi");
a[4] = new String("sinta");
a[5] = new String("joko");
a[6] = new String("agus");
a[7] = new String("meri");
a[10] = new String("toni");
a[14] = new String("rina");
a[15] = new String("niko");
a[16] = new String("lori");
a[22] = new String("peni");
a[38] = new String("wenda");
a[58] = new String("dina");
while (kondisi) {
System.out.println("1. Anak ke-X dari orang tua
Y");

Dokumen Laboratorium Teknik Informatika UMM @ 2016 Laporan Modul Praktikum Algoritma

By. [NIM] [Nama]

dan Struktur Data

System.out.println("2. Orang tua dari anak keX");


System.out.println("3. Semua anak dari orang tua
Y");
System.out.println("4. Cucu dari orang tua Y");
System.out.println("5. Semua anggota keluarga");
System.out.print("Masukkan Pilihan : ");
int pilihan = input.nextInt();
if (pilihan == 1) {
System.out.print("Nama Orangtua : ");
String ortu = input.next();
System.out.print("Anak nomor : ");
int nomor = input.nextInt();
System.out.print("Anak ke-" + nomor + " dari
" + ortu + " adalah ");
menu1(nomor, ortu, a, 58);
System.out.println();
} else if (pilihan == 2) {
System.out.print("Nama anak : ");
String anak = input.next();
System.out.print("Orangtua dari " + anak + "
adalah ");
menu2(anak, a, 58);
System.out.println();
} else if (pilihan == 3) {
System.out.print("Nama Orangtua : ");
String ortu = input.next();
System.out.print("Semua anak dari " + ortu +
" adalah ");
menu3(ortu, a, 58);
System.out.println();
} else if (pilihan == 4) {
System.out.print("Nama Orangtua : ");
String ortu = input.next();
System.out.print("Cucu dari " + ortu + "
adalah ");
menu4(ortu, a, 58);
System.out.println();
} else if (pilihan == 5) {

Dokumen Laboratorium Teknik Informatika UMM @ 2016 Laporan Modul Praktikum Algoritma

By. [NIM] [Nama]

dan Struktur Data

System.out.print("Semua anggota keluarga :


");
menu5(a, 58);
System.out.println();
} else {
System.exit(0);
kondisi = false;
}
System.out.println("\n--------------------------------------");
}
}
}

Dokumen Laboratorium Teknik Informatika UMM @ 2016 Laporan Modul Praktikum Algoritma

By. [NIM] [Nama]

dan Struktur Data

Tugas 1
1.
2.
3.
4.

Membuat preoder, inoder, dan potoder.


preoder dibaca atas kiri kanan contoh abc
inoder dibaca kiri atas kanan bac
potoder kiri kanan atas bca

Tugas2
1.Pada program ArrayBinarySearchTree.
2. Lalu memilih apa yang kita ingin otput.
3. contoh kita pilih no 1) Anak ke-X dari orang tua maka muncul Nama Orangtua : lalu ketik nama
sinta, lalu muncul Anak nomor : lalu ketik nomor 2 maka hasil outpunya Anak ke-2 dari sinta adalah
niko.

6. Kesimpulan
Memahamistruktur pohon tree sebagai model penyimpanan data. Memahami cara
menyimpan dan mengakses elemen dari sebuah struktur pohon biner. Memahami struktur
pohon biner dalam versi linked list. Memahami operasi-operasi standar yang terkait dengan
pohon biner

Dokumen Laboratorium Teknik Informatika UMM @ 2016 Laporan Modul Praktikum Algoritma

By. [NIM] [Nama]

dan Struktur Data

Anda mungkin juga menyukai