Disusun oleh :
1
Kata Pengantar
Segala puji kami ucapkan atas kehadirat Tuhan Yang Maha Esa.
Karenanya kami dapat menyelesaikan Laporan Tugas akhir Algoritma dan
Struktur Data. Adapun materi yang tercantum pada materi ini ialah,avl dan b-
tree,binary search Tree,Binari Heap.
Dalam pembuatan laporan akhir, kami pasti tidak luput dari kesalahan,
namun berkat bantuan dan semangat dari teman-teman kelompok dan kelas,maka
kami dapat menyelesaikan laporan akhir ini. Atas selesainya laporan akhir ini,
kami menyampaikan rasa terima kasih yang sebesar-besarnya kepada:
1. Bapak Putut Pamilih Widagdo, S.Kom., M.Kom dan Bapak Amin Padmo Azam
Masa, S.Kom., M.Cs.Selaku Dosen pengampu mata kuliah Algoritma
Pemrograman Dasar Sistem Informasi
2. Serta semua pihak yang tidak dapat kami sebutkan satu persatu, yang telah
membantu menyelesaikan laporan akhir ini.
Kami sebagai mahasiswa program studi sistem informasi sadar atas laporan tugas
akhir ini jauh dari kata sempurna, karena itu kritik dan saran akan sangat berguna
dalam membangun kesempurnaan dalam laporan ini, kami berharap laporan ini
bisa berguna bagi mahasiswa ataupun siapa saja yang sedang membacanya.
II
DAFTAR ISI
Kata Pengantar...........................................................................................................2
DAFTAR ISI..................................................................................................................3
DAFTAR GAMBAR.......................................................................................................4
BAB I...........................................................................................................................6
PENDAHULUAN.......................................................................................................6
BAB II..........................................................................................................................8
ISI.............................................................................................................................8
BAB III.......................................................................................................................26
PENUTUP...............................................................................................................26
3.1 Kesimpulan......................................................................................................26
3.2 Saran................................................................................................................26
DAFTAR PUSTAKA.....................................................................................................27
III
DAFTAR GAMBAR
gambar 1. 1..............................................................................................................................................11
gambar 1. 2..............................................................................................................................................12
gambar 1. 3..............................................................................................................................................12
gambar 1. 4..............................................................................................................................................13
gambar 1. 5..............................................................................................................................................13
gambar 1. 6..............................................................................................................................................13
gambar 1. 7..............................................................................................................................................13
gambar 1. 8..............................................................................................................................................14
gambar 1. 9..............................................................................................................................................14
gambar 1. 10............................................................................................................................................14
gambar 1. 11............................................................................................................................................15
gambar 1. 12............................................................................................................................................16
gambar 1. 13............................................................................................................................................16
gambar 1. 14............................................................................................................................................17
gambar 1. 15............................................................................................................................................18
gambar 1. 16............................................................................................................................................18
gambar 1. 17............................................................................................................................................18
gambar 1. 18............................................................................................................................................19
gambar 1. 19............................................................................................................................................19
gambar 1. 20............................................................................................................................................19
gambar 1. 21............................................................................................................................................20
gambar 1. 22............................................................................................................................................20
gambar 1. 23............................................................................................................................................21
IV
gambar 1. 24............................................................................................................................................25
V
BAB I
PENDAHULUAN
Dalam ilmu komputer, tree adalah sebuah struktur data yang secara bentuk
menyerupai sebuah pohon, yang terdiri dari serangkaian node (simpul) yang saling
berhubungan. Node-node tersebut dihubungkan oleh sebuah vektor. Setiap node dapat
memiliki 0 atau lebih node anak (child). Sebuah node yang memiliki node anak disebut
node induk (parent). Sebuah node anak hanya memiliki satu node induk. Sesuai
konvensi ilmu komputer, tree bertumbuh ke bawah, tidak seperti pohon di dunia nyata
yang tumbuh ke atas. Dengan demikian node anak akan digambarkan berada di bawah
node induknya. Node yang berada di pangkal tree disebut node root (akar),
sedangkan node yang berada paling ujung pada piramida tree disebut node leaf
(daun). Dalam mata kuliah struktur data, secara khusus akan dipelajari mengenai
pohon biner. Pohon biner adalah sebuah tree yang pada masing-masing
simpulnya hanya dapat memiliki maksimum 2 (dua) simpul anak. Tidak boleh
6
lebih. Pada pohon biner, umumnya kedua node anak disebut dengan posisinya,
yaitu kiri dan kanan.
Berdasarkan latar belakang di atas, maka dapat diambil rumusan masalah sebagai
berikut:
1).Bagaimana cara menjelaskan algoritma suatu tree.
2).Bagaimana mengimplementasikan suatu
algoritma.
7
BAB II
ISI
Tipe data abstrak atau yang dikenal sebagai Abstract Data Type adalah model
matematika dari obyek data yang menyempurnakan tipe data dengan cara
mengaitkannya dengan fungsi-fungsi yang beroperasi pada data yang
bersangkutan. Tipe data abstrak adalah tipe data yang didefinisikan sendiri oleh
pemrogram untuk suatu keperluan tertentu yang tidak memungkinkan untuk
mendeklarasikan dari tipe data yang sudah ada. Contoh tipe data abstrak adalah
stack, queue, list, tree, graph, dan lain-lain.
Harus dibedakan antara pengertian struktur data dan tipe data abstrak. Struktur
data hanya memperlihatkan bagaimana data-data di organisir, sedangkan tipe data
abstrak mengemas struktur data tertentu sekaligus dengan operasi-operasi yang
dapat dilakukan pada struktur data tersebut. Dengan demikian, definisi umum
tentang tipe data abstrak dapat dipahami bahwa tipe data abstrak adalah struktur
data yang mengandung operasi-operasi atau aturan-aturan tertentu.
b. Contoh
ADT Built-in:
Boolean
Integer
8
c. Algoritma
Create
Create digunakan untuk membentuk binary tree baru yang masih kosong.
Clear
Empty
Insert
Find
Find digunakan untuk mencari root, parent, left child , atau right child dari suatu
node dengan syarat tree tidak boleh kosong.
Update
Update digunakan untuk mengubah isi dari node yang ditunjuk oleh pointer
current dengan syarat tree tidak boleh kosong.
Retrieve
Retrieve digunakan untuk mengetahui isi dari node yang ditunjuk pointer current
dengan syarat tree tidak boleh kosong.
Delete Sub
Characteristic
Traverse
9
2.2 Avl tree dan b-tree
a.Definisi
1. AVL Tree adalah Binary Search Tree yang memiliki perbedaan tinggi/level
maksimal 1 antara subtree kiri dan kanan. AVL Tree digunakan untuk
menyeimbangkan Binary Search, mempersingkat waktu pencarian, dan
menyederhanakan bentuk tree.
AVL Tree juga merupakan elf-balancing Binary Tree, yaitu Binary Tree
yang menyetarakan isi nodenya. Bentuknya seperti Binary Search Tree.
Namun di AVL Tree, tinggi dari setiap node diperhatikan.
Tinggi dari setiap node adalah tinggi dari setiap anaknya ditambah 1
2. Binary Tree merupakan salah satu bentuk struktur data tidak linear yang
menggambarkanhubungan 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 ( disebut subtree).Dalam tree terdapat jenis-jenis tree yang
memiliki sifat khusus, diantaranya adalah binary tree. Binary tree adalah
suatu tree dengan syarat bahawa tiap node (simpul) hanya boleh memiliki
maksimal dua subtree dan kedua subtree tersebut harus terpisah. Tiap node
10
dalam binary treee boleh memiliki paling banyak dua child (anak simpul),
secara khusus anaknya dinamakan kiri dan kanan.
b.C ontoh
1. AVL tree
gambar 1. 1
11
2.B-Tree
gambar 1. 2
c.A lgoritma
1. AVL Tree
AVL Tree Operations :
1. Insertion
2. Deletion
Insertion
1. Node terdalam terletak pada subtree kiri dari anak kiri T (left - left)
2. Node terdalam terletak pada subtree kanan dari anak kanan T (right -
right)
3. Node terdalam terletak pada subtree kanan dari anak kiri T (right - left)
4. Node terdalam terletak pada subtree kiri dari anak kanan T (left - right)
Empat kondisi diatas bisa diatasi dengan melakukan rotasi. Kondisi 1 & 2
dengan single rotation, dan Kondisi 3 & 4 dengan double rotation.
1. Left Rotation, disaat node diinsert ke subtree kanan dari subtree kanan.
gambar 1. 3
12
gambar 1. 4
3. Left-Right Rotation, rotasi gabungan dari Left rotation yang diikuti dengan
Right rotation.
gambar 1. 5
Node diinsert ke subtree kanan dari subtree kiri yang membuat C menjadi
unbalanced node. kasus ini membuat left-right rotation dilakukan.
gambar 1. 6
gambar 1. 7
13
Setelah tree menjadi seperti yang tergambarkan diatas, selanjutnya lakukan
Right rotation, dan tree akan balanced.
gambar 1. 8
Node diinsert ke subtree kiri dari subtree kanan, yang menjadikan node A
unbalanced dengan balance factornya adalah 2.
gambar 1. 9
gambar 1. 10
Setelah seperti ini, lakukan left rotation dan tree akan balanced.
Deletion
14
Operasi Deletion node pada AVL Tree sama seperti pada Binary Search
Tree. Node yang dihapus digantikan oleh node terbesar pada subtree kiri
atau node terkecil pada subtree kanan.
Ada 2 Kasus yang biasanya terjadi saat operasi delete dilakukan, yaitu :
Jika node yang akan dihapus berada pada posisi leaf/node tanpa anak, maka
bisa langsung dihapus
Jika node yang akan dihapus memiliki anak, maka proses penghapusan
harus di cek kembali untuk menyeimbangkan Binary Search Tree.
Anggap T adalah node yang harus diseimbangkan kembali :
Kasus 1 : node terdalam terletak pada subtree kiri dari anak kiri T (left-left)
Kasus 2 : node terdalam terletak pada subtree kanan dari anak kanan T
(right-right)
Kasus 3 : node terdalam terletak pada subtree kanan dari anak kiri T (right-
left)
Kasus 4 : node terdalam terletak pada subtree kiri dari anak kanan T (left-
right)
2.B Tree
Insert
Steps :
Cari dulu dimana key untuk lokasi peletakan node di sebuah tree
Jika di leaf yang hanya terisi 2-node maka kita bisa langsung insert
Jika leaf sudah 3-node dorong data tengah antara A, B dan kunci (A dan B
adalah dua data dalam bahwa 3-node) ke parentnya dan membagi dua data
yang tersisa menjadi dua 2-simpul. Rekursif sampai parent tidak memiliki
jumlah node yang lebih dari 2.
gambar 1. 11
Delete
Steps :
Pilih node yang ingin kita hapus
15
Jika leaf sudah 3-node, kita tinggal hapus node dan menjadi leaf yang berisi
2-node.
Jika berada di 2-node:
Jika parent adalah 3-node, mendapatkan satu nilai dari itu. Jika child yang
satu level adalah 3-simpul, dorong satu nilai dari child ke parent (untuk
membuat parent 3-simpul lagi). Jika child yang selevel adalah 2-node,
membuat parent 2-node dan menggabungkan node saat ini dengan child
yang selevel.
Jika induk 2-node. Jika saudara kandung adalah 3-node kemudian
mendapatkan satu nilai dari parent dan mendorong satu nilai dari child ke
parent nya. Lain menggabungkan parent dengan child yang selevel.
Rekursif sampai parent tidak memiliki jumlah node yang lebih dari 2.
gambar 1. 12
gambar 1. 13
16
2.3 Binary Search Tree
a.Definisi
Binary Search Tree (BST) merupakan tree yang terurut (ordered Binary Tree) yang
memiliki kelebihan bila dibanding dengan struktur data lain. Diantaranya adalah proses
pengurutan (sorting) dan pencarian (searching) dapat dilakukan bila data sudah tersusun
dalam struktur data BST. Pengurutan dapat dilakukan bila BST ditelusuri (traversed)
menggunakan metode in-order. Detail dari proses penelusuran ini akan dibahas pada
pertemuan selanjutnya. Data yang telah tersusun dalam struktur data BST juga dapat
dicari dengan mudah dan memiliki rata-rata kompleksitas sebesar O(log n), namun
membutuhkan waktu sebesar O(n) pada kondisi terjelek dimana BST tidak berimbang dan
membentuk seperti linked list seperti contoh berikut:
gambar 1. 14
b.Contoh
17
gambar 1. 15
c.Algoritma
gambar 1. 16
gambar 1. 17
18
gambar 1. 18
Langkah 4: Pemasukan data 1. Karena data 1 lebih kecil dari data di root yaitu 5 maka
penelusuran dilanjutkan kesebelah kiri root. Kemudian karena disebelah kiri sudah ada daun
dengan nilai 3 dan data 1 lebih kecil dari data 3 maka data 1 disisipkan disebelah kiri simpul 3.
gambar 1. 19
gambar 1. 20
Langkah 6: Pemasukan data 6. Karena data 6 lebih besar dari data di root yaitu 5 maka
penelusuran dilanjutkan kesebelah kanan root. Kemudian karena disebelah kanan sudah ada
simpul dengan nilai 7 dan data 6 lebih kecil dari data 7 maka data 6 disisipkan disebelah kiri
simpul 7.
19
gambar 1. 21
Langkah 7: Pemasukan data 8. Karena data 8 lebih besar dari data di root yaitu 5 maka
penelusuran dilanjutkan kesebelah kanan root. Kemudian karena disebelah kanan sudah ada
simpul dengan nilai 7 dan karena data 8 lebih besar dari data 7 maka data 8 disisipkan disebelah
kanan simpul 7.
gambar 1. 22
Langkah 8: Pemasukan data 9. Karena data 9 lebih besar dari data di root yaitu 5 maka
penelusuran dilanjutkan kesebelah kanan root. Kemudian karena disebelah kanan bukan
merupakan daun yaitu simpul dengan nilai 7 dan karena data 9 lebih besar dari data 7
penelusuran terus dilanjutkan kesebelah kanan. Selanjutnya ditemukan daun dengan nilai 8,
karena data 9 lebih besar dari 8 maka data 9 disisipkan disebelah kanan simpul 8.
20
gambar 1. 23
21
2.4 Binary Heap
a.Definisi
Pengertian Heap Adalah struktur data yang berbentuk pohon yang memenuhi sifat-
sifat heap yaitu jika B adalah anak dari A, maka nilai yang tersimpan di simpul A
lebih besar atau sama dengan nilai yang tersimpan di simpul B.Hal ini
mengakibatkan elemen dengan nilai terbesar selalu berada pada posisi akar, dan
heap ini disebut max heap.(Bila perbandingannya diterbalikkan yaitu elemen
terkecilnya selalu berada di simpul akar, heap ini disebut adalah min heap).Karena
itulah, heap biasa dipakai untuk mengimplementasikan priority queue. Operasi-
operasi yang digunakan untuk heap adalah:
1. Binary heap
adalah heap yang dibuat dengan menggunakan pohon biner.
2. Binomial heap
22
adalah heap yang dibuat dengan menggunakan pohon binomial.
3. Fibonacci Heap
Fibonacci heap adalah kumpulan pohon yang membentuk minimum heap.
Pohon dalam struktur data ini tidak memiliki bentuk yang tertentu dan pada
kasus yang ekstrim heap ini memiliki semua elemen dalam pohon yang berbeda
atau sebuah pohon tunggal dengan tinggi Keunggulan dari Fibonacci heap adalah
ketika menggabungkan heap cukup dengan menggabungkan dua list pohon.
c.Algoritma
23
Proses ini berulang sampai tidak ada lagi data yang tersisa dalam heap dan
larik yang terurut penuh. Dalam implementasinya kita membutuhkan dua larik –
satu untuk menyimpan heap dan satu lagi untuk menyimpan data yang sudah
terurut.Tetapi untuk optimasi memori, kita dapat menggunakan hanya satu larik
saja.Yaitu dengan cara menukar isi akar dengan elemen terakhir dalam heap
tree.Jika memori tidak menjadi masalah maka dapat tetap menggunakan dua larik
yaitu larik masukan dan larik hasil.
end := count -1
remove ( )
reheapify ( )
end := end – 1
x[3]=4; x[6]=10;
24
Heap adalah sebuah binary tree dengan ketentuan sebagai berikut :
Tree harus complete binary tree
-Semua level tree mempunyai simpul maksimum kecuali pada level terakhir.
-Pada level terakhir, node tersusun dari kiri ke kanan tanpa ada yang dilewati.
Perbandingan nilai suatu node dengan nilai node child-nya mempunyai ketentuan
-Max Heap mempunyai ketentuan bahwa nilai suatu node lebih besar atau sama
-Min Heap mempunyai ketentuan bahwa nilai suatu node lebih kecil atau sama
Contoh:
gambar 1. 24
25
BAB III
PENUTUP
3.1 Kesimpulan
3.2 Saran
Menurut riset dan survei, sistem pemrograman pada masa sekarang dan
masa yang akan datang merupakan hal yang sangat penting. Untuk itu,
diharapkan ilmu ini dapat terus berkembang dan para dosen serta asisten
laboratorium dapat memberikan materi dengan sangat baik kepada para
mahasiswa agar paham cara penggunaan pemrograman dalam kehidupan sehari –
hari, seperti contohnya program yang kami buat, yaitu program tabungan yang
dapat membantu para usaha dalam bidang jasa keuangan diluar sana. Serta
diharapkan akan ada lebih banyak jenis program yang dapat dibuat oleh generasi
sekarang maupun yang akan datang agar bisa membantu meringankan lebih
banyak pekerjaan di luar sana
26
DAFTAR PUSTAKA
2301893013, M. R. (May 09, 2020). AVL Tree & B-Tree. AVL Tree & B-Tree. Diambil kembali dari
https://dastrukraul.blogspot.com/2020/05/avl-tree-b-tree.html?m=1
Dr. Taufik Fuadi Abidin, M. (t.thn.). Struktur Data dan Algoritma. Struktur Data dan Algoritma, 10.
Diambil kembali dari file:///C:/Users/LENOVO%20E31/Downloads/binary%20search%20tree
%20(1).pdf
dari https://pt.slideshare.net/MetaPratamaN/materi-struktur-data-tree
27