Anda di halaman 1dari 18

LAPORAN STRUKTUR DATA DAN ALGORITMA

Binary Search Tree

OLEH: BILLY RIZKY JURISTRA M0511014

JURUSAN INFORMATIKA FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM UNIVERSITAS SEBELAS MARET SURAKARTA 2012

Screenshot source code program 1. Node.java

2. BinTree.java

3. Main.java

Analisa Program Binary Search Tree Didalam program binary search tree ini terdapat beberapa method method penting yang membangun sebuah program binary search tree ini. Untuk lebih jelasnya , akan dibahas dan dianalisa permethod dibawah ini. 1) Method isEmpty()

Pada method isEmpty() ini digunakan untuk mengecek apakah sebuah binary tree dalam keadaan kosong atau tidak. Apabila binary tree dalam keadaan kosong maka akan mereturn (root==null). Method ini digunakan sebagai fungsi cek pada method method lainnya. 2) Method insert(Node input)

Pada method insert ini digunakan untuk menyisipkan suatu data baru ke dalam binary tree. Method ini mempunyai parameter bertipe Node. Pertama kita membuat Boolean cek = true yang nantinya digunakan untuk mengecek apakah data sudah ada didalam binary tree atau belum agar tidak terjadi duplikasi data. Kemudian kita buat if statemen dengan if yang pertama adalah untuk mengecek apakah binary tree dalam kondisi kosong atau tidak , jika binary tree kosong maka data inputan yang kita masukkan tadi akan menjadi root (root = input). Selanjutnya pada else statemen , kita inisiasikan dua variable bertipe Node dengan nama temp dan parent. Node temp kita sama dengankan root dan Node parent kita sama dengankan null. Kemudian kita buat perulangan while dengan isian while (temp!=null). Didalam binary tree , cabang kanan akan lebih besar dari cabang yang kiri , maka didalam while kita buat if statemen dengan if yang pertama adalah if (input.data > temp.data) akan menjalankan temp = temp.right. Sebaliknya apabila if (input.data < temp.data) maka akan menjalankan temp = temp.left. Akan tetapi apabila data sudah ada maka temp akan menjadi null dan boolean cek yang semula true akan berubah menjadi false. Setelah itu diluar while kita buat lagi if statemen. Apabila input.data > parent.data maka akan menjalankan parent.right = input , selain itu parent.left = input. 3) Method findMax()

Pada method ini digunakan untuk mencari nilai terbesar dalam suatu binary tree. Perlu diingat bahwa dalam binary tree cabang paling kanan akan selalu lebih besar daripada cabang sebelah kiri. Maka dari itu , nilai terbesar akan berada pada daun yang paling kiri. Pertama kali kita membuat Node temp = root. Kemudian kita cek apakah sebuah binary tree kosong atau tidak , jika kosong maka akan mereturn null. Sebaliknya apabila tidak kosong maka akan menjalankan statemen temp = temp.right yang sebelumnya kita buat perulangan while dengan isian while (temp.right!=null). Jika sudah memenuhi kondisi maka akan keluar dari while dan akan mereturn temp , nilai terbesar akan berhasil dicari. 4) Method findMin()

Method ini merupakan kebalikan dari method findMax yang sebelumnya kita bahas. Jika pada method findMax akan menyusuri bagian dari cabang kanan dari sebuah binary tree , maka pada method findmin ini akan menyusuri cabang kiri dari sebuah binary tree. Perubahan yang terjadi hanya pada temp = temp.left yang sebelumnya temp = temp.right pada method findMax.

5) Method find(Int data)

Method ini berfungsi untuk mancari sebuah data pada binary tree. Method find ini mempunyai parameter bertipe integer. Pertama kali kita membuat Boolean bill = false yang nantinya digunakan untuk pengecekan. Kemudian buat Node temp = root. Setelah itu apabila binary tree dalam keadaan kosong maka akan menjalankan if statemen yang pertama yaitu System.out.println(BinTree Masih Kosong). Jika binary tidak dalam keadaan kosong maka akan menjalankan else yang berisi perulangan while (temp!=null). Didalam while tersebut terdapat if statemen yang pertama if (cari<temp.data) maka akan menjalankan temp = temp.left. Sebaliknya jika cari>temp.data maka akan menjalankan temp = temp.right. Akan tetapi apabila cari = temp.data , maka akan menjalankan bill = true (merubah nilai boolean cek yang awalnya false). Kemudian jika data sudah ketemu dan nilai bill menjadi true maka akan menampilkan hasil pencarian data.

6) Method removeall()

Pada method ini akan menjalankan fungsi penghapusan seluruh isi dari sebuah binary tree. Proses penghapusannya adalah pertama membuat if statemen dengan isian if (temp!=null). Pertama akan menjalankan removeAll(temp.left) dan kedua akan menjalankan removeAll(temp.right) , dan terakhir akan membuat semuanya terhapus (temp = null). 7) Method preorder()

Method ini digunakan untuk menampilkan binary tree secara pre order. Method ini memiliki parameter bertipe data Node.Algoritmanya adalah pertama kita membuat if statemen yang berisi if (temp!=null) maka akan menjalankan perintah System.out.print(temp.data+ ). Maksud kode ini adalah untuk menampilkan isi dari seluruh binary tree secara pre order. Kemudian akan menjalankan eksekusi perintah preorder(temp.left) dan preorder(temp.right).

8) Method inorder(Node temp)

Method inorder ini digunakan untuk menampilkan seluruh isi dari binary tree secara inorder. Method ini mempunyai parameter dengan tipe data Node. Prosesnya adalah pertama kita membuat if statement dengan isian if (temp!= null). Kemudian didalam if tersebut terdapat perintah inorder(temp.left). Selanjutnya akan ditampilkan ke layar dengan cara System,out,print(temp.data+ ). Langkah terakhir adalah menjalankan perintah inorder(temp.right). 9) Method postorder(Node temp)

Method ini digunakan untuk menampilkan binary tree secara postorder. Method ini mempunyai parameter bertipe data Node. Pertama kali kita membuat if statement

dengan kondisi if (temp!=null). Setelah itu didalam if statement tersebut kita membuat perintah postorder(temp.left). Kemudian perintah postorder(temp.right). Selanjutnya kita tampilkan ke layar dengan cara System.out.print(temp.data+ ). Maka hasil dari penampilan seluruh isi dari binary tree secara postorder akan tertampil dilayar. 10) Method getLeaf()

Pada method getleaf ini berfungsi untuk mencari berapa banyak jumlah leaf (daun) yang terdapat dalam sebuah binary tree. Pertama kali kita membuat method getleaf() yang isinya akan mereturn this.help(root). Kemudian kita membuat method help dengan parameter bertipe data Node. Didalam method help tersebut , pertama kita membuat if(data==null) dan akan mereturn. Pada else statement akan berisi else if (data.left==null && data.right==null) akan mereturn 1.

11) Method getdirection()

Method getdirection ini berfungsi untuk mencari penelusuran sebuah data yang ingin kita cari.Pertama kita cek apakah binary tree kosong atau tidak , jika kosong maka akan menampilkan BinTree Masih Kosong. Jika tidak maka akan menjalankan else yang isinya pertama kita membuat Node temp kita sama dengankan root. Setelah itu kita membuat perulangan while yang isinya while (temp!=null). Didalam while tersebut terdapat if yang pertama yaitu if (masuk>temp.data) maka akan menjalankan System.out.print(temp.data), temp = temp.right. Sebaliknya akan menjalankan System.out.print(masuk), temp = temp.left. Apabila if (masuk ==

temp.data) maka akan menjalankan System.out.print(masuk). Maka direction penelusuran data akan tertampil pada layar. 12) Method remove(Node hapus)

Method remove ini berfungsi untuk menghapus indeks data yang ingin kita hapus. Algoritmanya jika indeks yang kita cari kurang dari root , maka akan menelusuri cabang sebelah kiri , jika indeks yang kita cari lebih besar daripada root , maka akan menelusuri cabang sebelah kanan. Jika sudah ketemu data yang ingin kita cari , tinggal kita null=kan saja data tersebut dengan cara parent.left=null atau parent.right=null.