Anda di halaman 1dari 17

LAPORAN HASIL ANALISA BINARY TREE

STRUKTUR DATA & ALGORITMA LANJUT (PRAKTIKUM)

2021

Disusun oleh

YUDA PERWIRA (0620103012)

PROGRAM STUDI TEKNIK INFORMATIKA

FAKULTAS TEKNIK UNIVERSITAS WIDYATAMA

BANDUNG
KATA PENGANTAR

Puji syukur penulis panjatkan kehadirat Tuhan Yang Maha Esa yang telah memberikan
limpahan rahmat, hidayah, serta inayah-Nya. Sehingga penulis dapat menyusun laporan
berjudul “LAPORAN HASIL ANALISA BINARY TREE”.

Laporan ini disusun untuk menambah pengetahuan kita mengenai cara menganalisis
program Binary Tree dengan baik dan benar. Selain itu juga dapat menambah keterampilan
kita dalam membuat program Binary Tree serta analasis Binary Tree yang baik.

Dalam menyusun laporan ini, penulis menyadari masih banyak kesalahan dan
kekurangan. Oleh sebab itu, penulis mengharapkan saran dan kritik yang bersifat membangun
dan dapat dijadikan bahan koreksi untuk memperbaiki penyusunan laporan berikutnya.

Semoga laporan ini dapat bermanfaat khususnya bagi penulis dan umumnya bagi para
pembaca.

Bandung, 24 November 2021

Penulis

i
DAFTAR ISI

ANALISIS BINARY TREE


KATA PENGANTAR ................................................................................................................ i
DAFTAR ISI..............................................................................................................................ii
BAB I ......................................................................................................................................... 1
PENDAHULUAN ..................................................................................................................... 1
1.1Latar Belakang .................................................................................................................. 1
1.2 Rumusan Masalah ............................................................................................................ 1
1.2 Tujuan Masalah ................................................................................................................ 2
BAB II........................................................................................................................................ 2
TINJAUAN PUSTAKA ............................................................................................................ 2
2.1 Konsep Algoritma ............................................................................................................ 2
BAB III ...................................................................................................................................... 3
IMPLEMENTASI PROGRAM ................................................................................................. 3
3.1 Implementasi Program Pada Binary Tree ........................................................................ 3
3.2 Contoh Program ............................................................................................................... 4
3.3 Analisis Fungsi ................................................................................................................. 8
3.4 Output dari Program ....................................................................................................... 13
BAB IV .................................................................................................................................... 14
PENUTUP................................................................................................................................ 14
4.1 Kesimpulan..................................................................................................................... 14

ii
BAB I
PENDAHULUAN

1.1 Latar Belakang


Tree merupakan salah satu bentuk struktur data tidak linear yang menggambarkan
hubungan yang bersifat hirarkis (hubungan One to Many) antara elemen-elemen. Tree bisa
didefinisikan sebagai kumpulan simpul/node dengan satu elemen khusus yang disebut Root
dan node lainnya terbagi menjadi himpunan-himpunan yang saling tak berhubungan satu
sama lainnya (disebut subtree). Tree juga adalah suatu graph yang acyclic, simple,
connected yang tidak mengandung loop.

Sebuah binary search tree (bst) adalah sebuah pohon biner yang boleh kosong, dan
setiap nodenya harus memiliki identifier/value. Value pada semua node subpohon sebelah
kiri adalah selalu lebih kecil dari value dari root, sedangkan subpohon di sebelah kanan
adalah sama atau lebih besar dari value pada root, masing-masing subpohon tersebut
(kiri&kanan) itu sendiri adalah juga bst.

Struktur data bst sangat penting dalam struktur pencarian, misalkan, dalam kasus
pencarian dalam sebuah list, jika list sudah dalam keadaan terurut maka proses pencarian
akan sangar cepat, jika kita menggunakan list contigue dan melakukan pencarian biner.
Akan tetapi, jika kita ingin melakukan perubahan isi list (insert/delete), menggunakan list
contigue akan sangat lambat, karna proses insert dan delete dalam list contigue butuh
memindahkan banyak elemen setiap saat. Mungkin kita bisa juga menggunakan linked-list,
yang untuk operasi insert atau delete tinggal mengatur-atur pointer, akan tetapi pada linked-
list, kita tidak bisa melakukan pointer sembarangan setiap saat, kecuali hanya satu kali
dengan kata lain hanya secara sequential.

1.2 Rumusan Masalah


1. Bagaimana cara menyelesaikan syntax yang telah diberikan?
2. Bagaimana output dari syntax yang telah diberikan?
3. Bagaimana penjelasan dari setiap fungsi yang ada didalam syntax yang telah diberikan?

1
1.2 Tujuan Masalah
1. Untuk mengetahui dan menganalisa error dari syntax yang telah diberikan beserta
perbaikannya.
2. Untuk mengetahui output yang dihasilkan oleh syntax tersebut.
3. Untuk bisa memahami dan mempelajari cara untuk menjelaskan dari setiap fungsi yang
ada pada syntax yang telah diberikan.

BAB II
TINJAUAN PUSTAKA

2.1 Konsep Algoritma

Konsep Algoritma yang dipakai yaitu,

 Decrease and conquer : metode desain algoritma dengan mereduksi persoalan menjadi
beberapa sub-persoalan yang lebih kecil, tetapi selanjutnya hanya memproses satu sub-
persoalan saja. Berbeda dengan divide and conquer yang memproses semua sub-
persoalan dan menggabung semua solusi setiap sub-persoalan
 Decrease dan conquer terdiri dari dua tahapan:
1. Decrease : mereduksi persoalan menjadi beberapa persoalan yang lebih kecil
(biasanya dua sub-persoalan)
2. Conquer : memproses satu sub-persoalan secara rekursif. Tidak ada tahap
combine dalam decrease and conquer.
 Tiga varian decrease and conquer:
1. Decrease by a constant : ukuran instan persoalan direduksi sebesar konstanta
yang sama setiap iterasi algoritma. Biasanya konstanta=1.
2. Decrease by a constant factor : ukuran instan persoalan direduksi sebersar
faktor konstanta yang sama setiap iterasi algoritma. Biasanya faktor
konstanta=2.
3. Decrease by a variable size : ukuran instan persoalan direduksi bervariasi pada
setiap iterasi algoritma.

2
Algoritma decrease and conquer :

1) Bagi himpunan koin menjadi dua sub-himpunan, masing-masing [n/2] koin.


Jika n ganjil, maka satu buah koin tidak dimasukkan ke dalam kedua sub-
himpunan.
2) Timbang kedua sub-himpunan dengan neraca.
3) Jika beratnya sama, berarti satu koin yang tersisa adalah palsu.
4) Jika beratnya tidak sama, maka ulangi proses untuk sub-himpunan yang
beratnya lebih ringan (salah satu koin didalamnya palsu).

Ukuran persoalan selalu berkurang dengan faktor setengah dari ukuran semula. Hanya setengah
bagian yang diproses, setengah bagian yang lain tidak diproses.

 Jumlah penimbangan yang dilakukan adalah :


0 ,𝑛 = 1
T(n)={ 𝑛
1 + 𝑇 (2) ,𝑛 > 1

 Penyelesaian relasi rekurens T(n) mirip seperti Binary Search :


T(n) = 1+T(n/2) = ..... + O(²log n).

BAB III
IMPLEMENTASI PROGRAM

3.1 Implementasi Program Pada Binary Tree

Binary Tree dapat dibuat dengan menggunakan linked list secara rekursif dan linked
list yang digunakan adalah double linked list non circular. Dimana, data yang pertama kali
masuk akan menjadi node root.

Data yang lebih kecil dari data node root akan masuk dan menempati node kiri dari node root,
sedangkan jika lebih besar dari data node node root akan masuk dan menempati node disebelah
kanan node root.

3
3.2 Contoh Program
Contoh program berikut akan dibagi menjadi 3 bagian dengan masing-masing nama
yaitu, Tree.h (sebagai header), Tree.cpp (bagan dari program), MainTree.cpp (main dari
program).
Adapun contoh programnya adalah sebagai berikut:

Tree.h

4
Tree.cpp

5
6
MainTree.cpp

7
3.3 Analisis Fungsi
1. Fungsi Add

Fungsi Add disini ditujukan untuk menambahkan data dimana data pertama akan
dijadikan node root dikarenakan adanya (**root) yang berarti rekursif sehingga menjadikannya
node root. Jika akan menambahkan data berikutnya, data akan dibandingkan dengan data root
sehingga jika data lebih kecil dari root, maka akan di letakan di sebelah kiri dan jika data lebiih
besar dari root maka akan diletakan di sebelah kanan, begitu seterusnya dengan data-data yang
akan dimasukan.

8
2. Fungsi Preorder

Fungsi preorder ditujukan untuk mengeluarkan output dengan urutan yakni, node root,
lalu sisi kiri dan kemudian sisi kanan. Jika root tidak sama dengan NULL artinya jika data root
telah disii/ada maka preorder akan mengunjungi sebelah kiri terlebih dahulu lalu kemudian ke
sebelah kanan dengan diawali data root itu sendiri.

3. Fungsi Inorder

Fungsi Inorder berbeda dengan fungsi preorder fungsi ini ditujukan untuk
mengeluarkan output dengan urutan yakni, data yang ada di sebelah kiri, lalu cetak root,
kemudian data yang ada di sebelah kanan. Jika root tidak sama dengan NULL artinya jika data
root telah diisi/ada maka Inorder akan mengunjungi ke sebelah kiri dulu, lalu cetak node root,
kemudian mengunjungi data sebelah kanan.

9
4. Fungsi Postorder

Fungsi ini seperti kebalikan dari fungsi preorder tetapi tidak sama, jika di fungsi
preorder node root yang akan dicetak terlebih dahulu, di dalam fungsi postorder, node root
akan dicetak di akhir. Fungsi ini ditujukan untuk mengeluarkan output dengan urutan yakni,
kunjungi data terkecil yang ada di sebelah kiri terlebih dahulu, lalu kunjungi data yang ada di
sebelah kanan, kemudian cetak node rootnya. Jika root tidak sama dengan NULL artinya jika
data root telah diisi/ada maka postorder akan mengunjungi data terkecil di sebelah kiri, lalu
mengunjungi data sebelah kanan lalu cetak node root.

5. Fungsi Cari

Fungsi ini ditujukan untuk mencari data yang ada didalam Binary Tree. Jika root sama
dengan NULL artinya root kosong, maka akan bernilai FALSE. Lainnya jika data yang dicari
lebih kecil dari root maka pencarian akan mengunjungi data sebelah kiri, lainnya jika data yang
dicari lebih besar dari root, maka pencarian akan mengunjungi data di sebelah kanan, lainnya
jika data sama dengan data root maka akan bernilai TRUE.

10
6. Fungsi Cek

Fungsi cek ini ditujukan untuk melakukan cek data yang ada didalam Binary Tree untuk
menentukan apakah data yang dicari ditemukan atau tidak. Jika data yang dicari ada atau
bernilai TRUE, maka cetak “data (nilai) ditemukan” dan jika data yang dicari bernilai FALSE
atau tidak ada, maka cetak “data (nilai) tidak ditemukan”.

7. Fungsi Count

Fungsi ini ditujukan untuk menghitung jumlah data yang dimasukan ke dalam Binary
Tree. Jika root sama dengan NULL artinya data root tidak ada, maka akan bernilai FALSE.
Lainnya jika root tidak sama dengan NULL artinya data root diisi/ada maka akan mulai
menghitung dari data yang ada di sebelah kiri dan ditambah dengan data yang ada di sebelah
kanan.

8. Fungsi Height

11
Fungsi ini ditujukan untuk mengetahui tingkatan atau level dari data yang ada di dalam
Binary Tree. Jika root sama dengan NULL artinya jika data root tidak ada atau kosong, maka
akan bernilai FALSE. Lainnya jika h1 sama dengan height data sebelah kiri, h2 sama dengan
height data sebelah kanan, jika h1 lebih besar dari h2 maka akan bernilai h1 adalah TRUE.
Lainnya jika h2 lebih besar dari h1, maka akan bernilai h2 adalah TRUE.

9. Fungsi Leaf

Fungsi ini ditujukan untuk mengetahui nilai data yang tidak memiliki succesor atau
dengan kata lain, nilai yang paling bawah. Jika root sama dengan NULL artinya root tidak ada,
maka cetak “Tree Kosong”. Jika data di sebelah kiri tidak sama dengan NULL artinya data di
sebelah kiri terisi atau ada, maka ada leaf di dalam data sebelah kiri. Jika data di sebelah kanan
tidak sama dengan NULL artinya data di sebelah kanan terisi atau ada, maka ada leaf di dalam
data sebelah kanan. Jika data sebelah kiri sama dengan NULL artinya data kosong atau tidak
ada AND data sebelah kanan sama dengan NULL artinya data kosong atau tidak ada. Cetak
data berdasarkan fungsi diatas jika ada maka di cetak jika tidak ada maka tidak akan tercetak.

12
3.4 Output dari Program

Sebelum itu penulis ingin memberitahukan bahwa terdapat error di dalam syntax dan
menunjukkan perbaikannya.

Untuk fungsi height return -1 digani dengan return 0

Dan dikarenakan didalam MainTree.cpp tidak ada syntax untuk menguji fungsi height, cari,
dan leaf, maka penulis berinisiatif untuk membuatkan syntax untuk menunjukkan hasil dari
fungsi tersebut.

Adapun output dari program tersebut adalah sebagai berikut

13
BAB IV
PENUTUP

4.1 Kesimpulan

Dari uraian pada pembahasan yang disajikan, maka ditarik sebuah kesimpulan bahwa:

1. Binary Tree adalah suatu tree dengan syarat bahwa tiap node (simpul) hanya
boleh memiliki maksimal dua subtree dan kedua subtree tersebut harus terpisah.
Tiap node dalam Binary Tree hanya boleh memiliki paling banyak dua child
(anak simpul), secara khusus anaknya dinamakan kiri dan kanan.
2. Terdapat tiga jenis binary tree diantaranya pertama adalah Full Binary Tree
yaitu semua node atau simpul (kecuali leaf) pasti memiliki 2 anak dan tiap
subtreememiliki panjang path yag sama,kedua adalah Complete Binary Tree
yaitu pada dasarnya mirip dengan full binary tree, tapi tiap subtree boleh
memiliki panjang path yang berbeda dan tiap node ((kecuali left ) memiliki 2
anak. Dan yang ketiga adalah Skewed Binary Tree yaitu binary tree yang semua
nodenya (kecuali leaf)hanya memiliki satu anak.
3. Terdapat beberapa operator-operator yang bekerja dalam binary tree yaitu
search/cari,delete,insert/add,transverse,create,clear dan masih banyak yang
lainnya.
4. Implementasi program yaitu dapat dibuat dengan menggunakan linked list
secara rekursif dan linked list yang digunakan adalah double linked list non
circular.

14

Anda mungkin juga menyukai