Anda di halaman 1dari 22

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

Anda mungkin juga menyukai