Binary Tree Pada Java
Binary Tree Pada Java
A. TUJUAN
Setelah melakukan praktikum mahasiswa diharapkan mampu :
Mengerti dan memahami binary tree
Mendeklarasikan, menginisialisasi dan mengakses binary tree
Membuat program dengan menggunakan binary tree
B. DASAR TEORI
Tree merupakan salah satu bentuk struktur data bukan linier yang menggambarkan bentuk
hierarki antara elemen-elemen. Tree atau pohon biasanya terdiri dari root atau akar, dan node-
node atau simpul-simpul yang berada di bawah root. Pohon atau tree dapat kita temukan dalam
kehidupan sehari-hari yang berbentuk struktur pohon, khususnya untuk menggambarkan sesuatu
yang berjenjang atau dapat disebut berhirarki. Contohnya yaitu diagram struktur organisasi mulai
dari pimpinan puncak ke para pegawai dibawahnya, diagram silsilah keluarga, atau jadwal
pertandingan dengan system gugur. Implementasi struktur pohon dapat memanfaatkan pointer
seperti model linked list. Setiap node mempunyai bagian data dan bagian pointer (Siahaan,
2018).
Sebuah pohon biner BT merupakan sebuah himpunan berhingga atas node-node, yang berupa
himpunan kosong ataupun yang tidak kosong sedemikian hingga darinya dapat ditetapkan
sebuah elemen 𝑡 ∈ 𝐵𝑇 dan BT – {t} terpartisi menjadi dua subhimpunan BT1 dan BT2, yang
keduanya juga merupakan pohon biner dan disebut subpohon biner kiri dan subpohon biner
kanan (left and right sub binary tree). Kedua subpohon ini juga biasa disebut anak kanan dan
anak kiri. Istilah-istilah pada binary tree antara lain :
1. Degree (derajat) adalah jumlah edge yang keluar dan masuk dari sebuah node.
2. Root (akar) adalah node yang memiliki derajat keluar ≥ 0 dan derajat masuk = 0.
3. Subtree/child adalah adalah bagian salah satu node dibawah root sampai ke bawah.
4. Predecessor adalah node yang berada di atas node tertentu.
5. Successor adalah node yang berada di bawah node tertentu.
6. Parent adalah predecessor satu level diatas satu node.
7. Child adalah successor satu level di atas suatu node.
8. Size adalah banyaknya node dalah suatu tree.
9. Ancestor adalah Node yang berada di atas node lain.
10. Descendant adalah node yang berada di bawah node lain.
11. Leaf (daun) adalah semua node yang derajat masuknya 1 dan derajat keluarnya 0.
12. Sibling adalah node yang mempunyai level yang sama dan parent yang sama.
13. Height adalah level tertinggi dari tree ditambah 1
14. Weight adalah jumlah daun pada tree
(Sismoro, 2004).
Cara untuk melintasi semua node pada pohon biner dapat dimulai dari node root, kemudian
dilanjutkan secara rekursi ke anak-anaknya. Jika kita menggunakan aturan bahwa kiri selalu
dikunjungi lebih awal dari kanan(LRO:_Left Right Order), maka diperoleh tiga cara yang
dikenal dengan Preorder (root-kiri-kanan), Inorder (kiri-root-kanan), dan Postorder (kiri-kanan-
root). Pemilihan nama tersebut didasarkan pada langkah mengunjungi root. Pada kunjungan
preorder, root dikunjungi sebelum kedua anaknya; Inorder, root dikunjungi setelah anak kirinya
dan sebelum anak kanannya; sedangkan pada kunjungan postorder, root dikunjungi setelah
kedua anaknya.
1. Full Binary Tree : semua node (kecuali leaf pasti memiliki 2 anak dan subtree memiliki
panjang path yang sama).
2. Complete Binary Tree : mirip dengan full binary tree, tetapi tiap subtree boleh memiliki
panjang path yang berbeda dan tiap node (kecuali leaf memiliki 2 anak).
3. Skewed Binary Tree : binary tree yang semua nodenya (kecuali leaf) hanya memiliki satu
anak.
(Nugroho, 2009).
D. LANGKAH-LANGKAH
Berikut langkah-langkah utama yang harus kita lakukan dalam menjalankan Java :
Langkah 1 : membuka ikon aplikasi Eclipse pada desktop. Aplikasi akan memunculkan tampilan
untuk pengguna dalam menentukan dimana tempat penyimpanan skrip yang dibuat seperti pada
gambar dibawah ini :
tempat penyimpanan telah ditentukan, maka akan muncul tampilan seperti gambar dibawah ini :
Langkah 2 : memilih Create a new Java project dan dilanjutkan pada langkah berikutnya.
Gambar 7 Tampilan Utama JRE (Java Runtime Environtment)
Langkah 1 : Menulis nama project sesuai ketentuan. Pastikan Use an execution environtment
JRE menunjukkan JavaSE-1.8 dan klik tombol Finish.
Langkah 2 : Langkah selanjutnya yaitu membuat class. Cara pertama yaitu memilih menu File,
selanjutnya New, lalu memilih Other. Cara ke-4 yaitu memilih Class dilanjutkan dengan memilih
Next. Cara selanjutnya yaitu menuliskan nama Class. Jangan lupa untuk centang Public static
void main (String[] args) lalu tekan tombol Finish seperti pada gambar di bawah ini :
Gambar 9. Tampilan New Java Class
Langkah 3 : Langkah selanjutnya yaitu menulis skrip pada 3 kelas, kelas pertama diberi nama
CINDYFATIKHA181110P11BinaryTree seperti dibawah ini :
Class kedua diberi nama TreeNode yang di isi dengan script seperti dibawah ini :
1. Error pertama terjadi karena salah menuliskan skrip yang seharusnya “\n” saya tulis “/n”
sehingga saat di run tidak sesuai dengan contoh yang ada pada modul dan keluar seperti yang
ada di bawah ini :
2. Error kedua terjadi karena awal di tulis salah yaiu “dikiri” dan skrip dibawahnya di tulis
“diKiri” sehingga tidak sama dan muncul tanda error seperti dibawah ini :
F. PENYELESAIAN TUGAS
TreeNode node;
tree.insert(node);
tree.insert(node);
tree.insert(node);
tree.insert(node);
tree.insert(node);
tree.insert(node);
tree.insert(node);
tree.insert(node);
tree.insert(node);
tree.insert(node);
tree.preOrder();
tree.inOrder();
System.out.println();
char data;
TreeNode left;
TreeNode right;
this.data=data;
TreeNode root;
return (root==null);
if(isEmpty()) {
root=input;
}else {
TreeNode current=root;
TreeNode parent=null;
boolean diKiri=true;
parent=current;
//bergerak ke kanan
if (current.data<input.data) {
current=current.right;
diKiri=false;
}else if(current.data>input.data) {
current=current.left;
diKiri=true;
}else {
System.out.println("data"+input.data+"sudah
ada");
break;
//HUBUNGKAN KE PARENT
if (diKiri) {
parent.left=input;
}else {
parent.right=input;
}
public void preOrder() {
preOrder(root);
inOrder(root);
postOrder(root);
//fungsi rekursif
if (akar !=null) {
System.out.print(akar.data+" ");;
preOrder(akar.left);
preOrder(akar.right);
if (akar !=null) {
inOrder(akar.left);
inOrder(akar.right);
if (akar !=null) {
postOrder(akar.left);
postOrder(akar.right);
System.out.print(akar.data+" ");
TreeNode node=null;
TreeNode current=root;
if (current.data==key) {
return node;
}else {
if (current.data<key) {
current=current.right;
}else {
current=current.left;
return node;