praktikum 6 implementasi implementasi implementasi binary

advertisement
MODUL PRAKTIKUM STRUKTUR DATA & ALGORITMA (SDA)
PRAKTIKUM
PRAKTIKUM 6 IMPLEMENTASI BINARY TREE
TUJUAN PEMBELAJARAN:
1. Mengimplementasikan struktur data Binary Tree menggunakan linked list.
2. Mampu mengimplementasikan beragam operasi pada struktur data binary tree
dengan Linked List.
3. Mampu melakukan pelacakan secara preorder, inorder dan post order pada binary
tree.
4. Mampu memanfaatkan struktur data Binary Tree untuk menyelesaikan
permasalahan.
PENGANTAR:
Binary Tree
Sebuah binary tree adalah sebuah pengorganisasian secara hirarki dari beberapa
buah simpul, dimana masing-masing simpul tidak mempunyai anak lebih dari 2. Simpul yang
berada di bawah sebuah simpul dinamakan anak (child) dari simpul tersebut. Simpul yang
berada di atas sebuah simpul dinamakan induk(parent) dari simpul tersebut.
Masing-masing simpul dalam binary tree terdiri dari tiga bagian : sebuah data dan
dua buah pointer yang dinamakan pointer kiri(left) dan kanan(right). Dengan menggunakan
tiga bagian ini, kita menampilkan sebuah binary tree dengan melakukan setting pada
pointer kiri dan kanan untuk menghubungkan sebuah simpul dengan anak-anaknya. Jika
sebuah simpul tidak mempunyai anak pada pointer kiri atau kanan, kita melakukan setting
pada pointer tersebut pada NULL, yang menunjukkan akhir dari percabangan adalah pada
simpul tersebut. Sebuah percabangan adalah kumpulan dari simpul-simpul yang dimulai
dari sebuah root dan diakhiri dengan sebuah simpul terakhir. Simpul terakhir (daun) adalah
simpul dari tree yang tidak mempunyai anak.
Gambar 6.1 Struktur Binary Tree
Abdul Aziz, Jurusan Informatika FMIPA UNS 2012
1
MODUL PRAKTIKUM STRUKTUR DATA & ALGORITMA (SDA)
Tabel 6.1 Terminologi Tree
Gambar 6.2 Ilustrasi sebuah Pohon Biner dengan Kedalaman 3
Implementasi Binary Tree dengan Linked List
Salah satu implementasi dari binary tree adalah Binary Search Tree (BST), dimana BST
merupakan sekumpulan elemen yang bernilai unik, dan untuk setiap node X dalam struktur
BST Nilai elemen pada sub pohon kiri (left subtree) pasti memiliki nilai yang lebih kecil
dari X dan nilai elemen pada sub poon kanan(right sub tree) pasti memiliki nilai yang labih
besar.
BST dapat disajikan dengan beberapa cara. Dalam praktikum ini akan menggunakan
linked list untuk implementasi Binary Search Tree. Linked list yang dipakai adalah double
linked list non circular.
Abdul Aziz, Jurusan Informatika FMIPA UNS 2012
2
MODUL PRAKTIKUM STRUKTUR DATA & ALGORITMA (SDA)
Gambar 6.3 Penyajian Binary Tree dengan Double Linked List
Berikut penjelasan detail mengenai implementasi Binary Search Tree dengan linked list:
•
•
•
•
•
•
Terdapat setidaknya 8 operasi yakni, insert, findMin, findMax, find, remove,
preOrder, inOrder, postOrder.
Proses insert dilakukan dengan mengikuti aturan sbb:
o Setiap node baru akan menempati posisi sebagai daun (leaf).
o Untuk insert kedalam BST dimulai dari root, jika data lebih kecil dari root,
node baru harus di masukkan ke dalam left sub tree. Jika data pada node
baru lebih besar dari root, node baru harus di masukkan ke dalam right sub
tree.
o Gunakan rekursif.
Operasi findMin akan mencari nilai terkecil dari node yang ada di dalam BST dengan
cara menelusuri left subtree sampai ke daun. (gunakan rekursif).
Operasi findMax akan mencari nilai terbesar dari node yang ada di dalam BST
dengan cara menelusuri right subtree sampai ke daun. (gunakan rekursif).
Operasi find akan mencari nilai yang dicari dengan membandingkan dengan data
pada root. Jika lebih kecil akan mencari di left sub tree, dan jika lebih besar cari di
right sub tree. (gunakan rekursif).
Operasi remove dilakukan dengan mengikuti aturan sbb:
o Jika node yang dihapus berposisi sebagai daun, dengan sederhana bisa
dihapus.
o Jika node memiliki satu anak, maka anak tersebut akan menggantikan posisi
node yang dihapus.
o Jika node memiliki 2 anak [pilih salah satu]:
Ganti node yang dihapus dengan node terkecil pada right sub tree.
Ganti node yang dihapus dengan node terbesar pada left sub tree.
Setiap elemen/node dari BST mempunyai 3 bagian yaitu bagian data yang bernilai dengan
data, bagian left untuk menunjuk ke left subtree dan bagian right untuk menunjuk ke right
sub tree. Dalam hal, ini setiap data dalam node bersifat unik/beda.
Abdul Aziz, Jurusan Informatika FMIPA UNS 2012
3
MODUL PRAKTIKUM STRUKTUR DATA & ALGORITMA (SDA)
LANGKAH PERCOBAAN 1:
Langkah 1 : Definisikan langkah-langkah yang harus dikerjakan dalam setiap operasi yang
tersebut diatas.
Langkah 2: Mengkonversi kedalam coding untuk setiap operasinya pada kerangka kelas di
bawah ini.
class BinaryNode<T>
{
// Data
private
private
private
member
T data; //menyimpan data node bst
BinaryNode left; // Reference ke left subtree
BinaryNode right; // Reference ke right sub tree
// Konstruktor, LeftNode dan RightNode di set null
BinaryNode(T d)
{... }
}
public class BinaryTree<T>
{
private BinaryNode<T> root;//akar dari bst
public
public
public
public
public
public
BinaryTree() {...}//konstruktor
BinaryNode<T> insert(T x, BinaryNode<T> t) {...}
BinaryNode<T> remove(T x, BinaryNode<T> t) {...}
BinaryNode<T> find(T x, BinaryNode<T> t) {...}
BinaryNode<T> findMin(BinaryNode<T> t) {...}
BinaryNode<T> findMax(BinaryNode<T> t) {...}
public void preOrder(...) {...}
public void inOrder(...) {...}
public void postOrder(...) {...}
}
Anda diminta untuk mengisi kode java untuk setiap konstruktor dan method yang
diimplementasikan (kurung yang kosong) sesuai dengan definisi sebelumnya.
Langkah 3: Simpan implementasi binary search tree yang anda buat dengan nama bst.java
Langkah 4: Buat class test untuk menguji implementasi bst yang anda buat.
Abdul Aziz, Jurusan Informatika FMIPA UNS 2012
4
MODUL PRAKTIKUM STRUKTUR DATA & ALGORITMA (SDA)
TUGAS PRAKTIKUM (POST TEST):
1. Modifikasi percobaan diatas dengan menambahkan operasi berikut:
a. Menghitung jumlah/size node dalam tree.
b. Menghitung height(kedalaman) tree.
c. Mencari semua data pada node yang berposisi sebagai leaf(daun).
Cat: Tugas praktikum sebisa mungkin dikerjakan di kelas. Asisten dimohon bisa memberikan arahan.
LAPORAN PRAKTIKUM BERISI PEMBAHASAN LATIHAN PERCOBAAN DAN SOAL. DIKUMPULKAN MINGGU
DEPAN.
Abdul Aziz, Jurusan Informatika FMIPA UNS 2012
5
Download