LAPORAN PRAKTIKUM
STRUKTUR DATA
MODUL 4
BINARY DAN TRAVERSAL BINARY TREE
Dosen Pengampu
Ach. Arif Alfin, S.Si., M.MT
Nama Mahasiswa : Muhammad Bagus Hermawan
NPM - Kelas : 20562020006 – A1
Tanggal Praktikum : 11 Juni 2021
Tanggal Pengumpulan : 18 Juni 2021
PROGRAM STUDI TEKNIK KOMPUTER
FAKULTAS TEKNIK
UNIVERSITAS ISLAM KADIRI – KEDIRI
2021
BAB I
PENDAHULUAN
A. Latar Belakang
Definisi dari tree yaitu salah satu bentuk struktur data tidak linear yang
menggambarkan hubungan yang bersifat hierarkis (hubungan one to many)
antara elemen- elemen. Jadi, pengertian dari tree adalah kumpulan node yang
saling terhubung satu sama lain dalam suatu kesatuan yang membentuk
layakya struktur sebuah pohon. Struktur dari tree terdiri dari root (akar) dan
leaf (daun). Contoh tree : struktur organisasi suatu perusahaan, daftar isi
sebuah buku, dan masih banyak yang lainnya. Untuk struktur dari tree dapat
dilihat pada gambar 1 berikut ini.
Gambar 1.1. Struktur Tree
B. Tujuan Pratikum
Setelah mengikuti praktikum ini, Mahasiswa diharapkan mampu untuk:
1. Mampu memahami konsep dasar dan operasi pada Tree
2. Memahami konsep dan implementasi dari Binary Tree beserta method-
method-nya.
3. Memahami dan mampu mengimplementasikan pembacaan Binary Tree
dengan Traversal.
71
BAB II
DASAR TEORI
A. Binary Tree
Binary tree merupakan sebuah tree yang mana setiap simpul tidak
memiliki child lebih dari dua. Masing-masing simpul dalam binary tree terdiri
dari tiga bagian yaitu sebuah data dan dua buah pointer yang dinamakan
pointer kiri dan kanan. Simpul juga mempunyai sibling, descendants, dan
ancestors. Sibling dari sebuah simpul adalah anak lain dari induk simpul
tersebut. Descendants dari sebuah simpul adalah semua simpul-simpul
merupakan cabang (berada di bawah) simpul tersebut. Anchestors dari sebuah
simpul adalah semua simpul yang berada di atas antara simpul tersebut dengan
root.
Gambar 2.1. Struktur Data Tree
Dalam struktur data Tree, root node ditentukan sebagai level 0 dan child
dari root node berada pada level 1. Sehingga, apabila suatu simpul dinyatakan
sebagai tingkat N, maka simpul-simpul yang merupakan child dinyatakan
sebagai N+1. Depth atau Kedalaman suatu tree adalah level maksimum dari
simpul tree tersebut.
72
73
Gamabar 2.2. Binary Tree dengan depth / kedalaman / tinggi 5
Binary Tree memiliki struktur data yang hampir mirip dengan Linked List, namun
Linked List lebih ke struktur data linier, sedangkan tree bukan struktur data linier
(lebih ke struktur data hierarkis).
B. Algoritma Binary Tree Traversal
Proses traversal adalah proses melakukan kunjungan pada setiap node pada
suatu binary tree tepat satu kali. Dengan melakukan kunjungan secara lengkap,
maka akan didapatkan urutan informasi secara linier yang tersimpan dalam
sebuah binary tree. Terdapat tiga teknik rekursif untuk binary tree traversals
,yaitu :
1. Mengunjungi simpul akar (root),
2. Melakukan traversal left subtree, dan
3. Melakukan traversal right subtree
Yang membedakan diantara ketiga Teknik tersebut adalah proses pengurutan
tugas mereka. Terdapat tig acara dalam melakukan Traversal, yaitu :
1. Traversal preorder (depth first order) Dilaksanakan dengan jalan
mencetak isi node yang dikunjungi lalu melakukan kunjungan ke left
subtree dan selanjutnya ke right subtree. Logika umum traversal
preorder adalah sebagai berikut:
o Jika tree kosong, maka keluar
o Jika ada, Proses node root.
o Traverse subtree kiri secara preorder.
o Traverse subtree kanan secara preorder.
74
2. Traversal inorder (symmetric order) Dilaksanakan dengan jalan
melakukan kunjungan ke subtree kiri, mencetak isi node yang
dikunjungi, lalu melakukan kunjungan ke subtree kanan. Logika umum
traversal inorder adalah sebagai berikut:
o Jika tree kosong, maka keluar.
o Traverse subtree kiri secara inorder.
o Proses node root.
o Traverse subtree kanan secara inorder
3. Traversal postorder Dilaksanakan dengan jalan melakukan kunjungan
ke subtree kiri, lalu ke subtree kanan, dan selanjutnya mencetak isi
node yang dikunjungi. Algoritma umum traversal inorder adalah
sebagai berikut:
o Jika tree kosong, maka keluar.
o Traverse subtree kiri secara postorder.
o Traverse subtree kanan secara postorder.
o Proses node root.
Semua algoritma traversal (preorder, inorder, postorder) yang diberikan di
atas berupa algoritma rekursif, dan sebenarnya dapat dikerjakan secara iteratif
dengan bantuan stack.
C. Implementasi Binary Tree
Binary Tree diimplementasikan dengan bantuan pointer. Node pertama
dalam tree direpresentasikan sebagai root pointer. Masing-masing node pada
tree terdiri dari tiga bagian, yaitu data, left pointer dan right pointer. Untuk
membuat binary tree, pertama kali kita perlu mendefinisikan suatu class node.
Dalam struktur diatas, data merupakan value-nya, left merupakan pointer yang
berisi address dari left node, dan right merupakan pointer yang berisi address
75
dari right node.
Algoritma untuk Membangun suatu BinaryTree
Method untuk memperoleh Depth / Height dari Binary Tree
Algoritma Pembacaan Binary Tree dengan Traversal PostOrder
76
Algoritma Pembacaan Binary Tree dengan Traversal InOrder
Algoritma Pembacaan Binary Tree dengan Traversal PreOrder
Algoritma untuk Menghapus BinaryTree
77
BAB III
LATIHAN PRAKTIKUM
78
BAB IV
TUGAS PRAKTIKUM
1. Buat algoritma Binary Tree untuk gambar berikut ini
Gambar 3.1. Studi kasus BinaryTree 1
Gambar 3.2. Studi kasus BinaryTree 2
2. Buat method traversal untuk pembacaan BinaryTree kasus 2 (gambar 4),
sehingga diperoleh output (a * b + c - d / e). dan jelaskan metode traversal apa
yang digunakan?
3. Buat main method untuk mengetahui tinggi/kedalaman dari BinaryTree, dan
bagaimana untuk menghapus BinaryTree!.
79
A. Source Code
Karena BinaryTree menggunakan pointer, maka kita perlu
mendeklarasikan node.
Gambar 4.3. Source Code implementasi BinaryTree
Membuat method untuk operasi insert
Gambar 4.4. Source Code implementasi BinaryTree
80
81
Method untuk operasi menampilkan traversal PreOrder, InOrder dan
PostOrder
Gambar 4.5. Source Code implementasi BinaryTree
Method untuk mengetahui tinggi Binarytree
Gambar 4.6. Source Code implementasi BinaryTree
Method untuk menghapus BinaryTree.
82
Gambar 4.5. Source Code implementasi BinaryTree
83
B. Analisa
Pertama, membuat deklarasi pointer yaitu node dengan nama class
“TreeNode”. Lalu membuat method untuk memasukan data menggunakan
insert. Lalu membuat method untuk traversal PreOrder, InOrder, dan
PostOrder. Dan juga method untuk mengetahui kedalaman / tinggi
BinaryTree menggunakan getHeight, dan juga method untuk menghapus
BinaryTree menggunakan deleteTree.
Untuk kasus 1 yaitu membuat algoritma untuk BinaryTree dengan
data 0 – 15, dengan data root 7. Maka data yang dimasukan pertama adalah
7, lalu turun ke kiri lalu ke kanan, dst.
Untuk kasus 2 membuat algoritma untuk BinaryTree dengan data
a*b+(c-d)/e, diperlukan output (a*b+c-d/e), dan traversal apa yang
digunakan. Maka diperlukan operasi PreOrder, InOrder, dan PostOrder.
Untuk kasus 3 diperlukan main method untuk mengetahui kedalaman
dari BinaryTree dan main method untuk menghapus BinaryTree. Untuk
mengetahui tinggi Tree diperlukan method, jika node kosong maka kembali
ke 0. Jika tidak maka kita membuat variabel untuk node kanan dan kiri. Jika
node kiri lebih dari node kanan maka, node kiri + 1, jika tidak maka node
kanan + 1. Untuk menghapus Tree diperlukan method, jika node tidak
kosong, maka root dan node dikosongkan.
84
C. Output
1. Algoritma Kasus 1
Operasi memasukan data Tree menggunakan operasi insert
Gambar 4.6. Source Code Method insert
Untuk menampilkan data diperlukan operasi traversal
85
Gambar 4.6. Source Code operasi traversal
Gambar 4.5. Hasil Output
2. Algoritma Kasus 2
Operasi memasukan data Tree
Gambar 4.6. Source Code memasukan data
Traversal yang digunakan untuk memperoleh output (a*b+c-d/e) adalah
traversal PreOrder.
86
Gambar 4.7. Hasil Output
3. Algoritma Kasus 3
Operasi menampilkan tinggi tree menggunakan method getHeight
Gambar 4.8. Source Code Method getHeight
Gambar 4.9. Hasil Output
Operasi menghapus Tree menggunakan method deleteTree
Gambar 4.10. Source Code menghapus Tree
Gambar 4.11. Hasil Output
87
88
BAB V
PENUTUP
A. Kesimpulan
89
DAFTAR PUSTAKA
1. Modul 5 Binary dan Traversal Binary Tree
90
LAMPIRAN
A. Tugas Pendahuluan
Jelaskan terminology berikut ini, dan sertakan contoh:
Binary Tree
Root
Parent
Child
Sibling
Leaf Node
Level Node
Depth of Binary Tree
Anchestors
Descendants
Jawab
Binary Tree adalah salah satu bentuk struktur data tidak linear yang
menggambarkan hubungan yang bersifat hierarkis (hubungan one to
many) antara elemen- elemen.
Root adalah akar dari tree atau data teratas dari tree.
Parent adalah node yang memliki maksimal 2 child.
Child adalah node di bawah parent.
Sibling adalah node yang memiliki parent yang sama dengan suatu node.
Leaf Node adalah node dalam tree yang tidak memiliki node dibawahnya.
Level Node adalah posisi dari sebuah node, dan root node ditentukan
sebagai level 0, semakin ke bawah maka level node + 1.
Depth of Binary Tree adalah kedalaman dari suatu Binary Tree.
Anchestor adalah semua simpul yang berada di atas antara simpul
tersebut dengan root.
Descendants adalah semua simpul-simpul merupakan cabang (berada di
bawah) simpul tersebut.
91