Adoc - Pub - Makalah Desain Dan Analisis Algoritma Binary Tree
Adoc - Pub - Makalah Desain Dan Analisis Algoritma Binary Tree
“BINARY TREE”
DISUSUN OLEH :
Puji Syukur kami panjatkan kehadirat Allah SWT karena berkat limpahan rahmat
dari-NYA kami selaku kelompok I dapat menyelesaikan makalah ini tepat pada
waktunya,walaupun dalam keadaan yang sangat sederhana.
Makalah ini berisikan tidak lanjut dari materi pembelajaran kita yang berjudul
“Binary Tree” .
Dengan segala keterbatasan yang kami miliki kami sajikan makalah ini dalam bentuk
yang sangat sederhana maka dari itu kami selaku panyaji minta maaf yang sebesar-besarnya
jika makalah ini masih begitu banyak kekurangan, baik itu yang kami sengaja ataupun tidak
karena ini senua masih dalam proses pembelajaran kami yang tentunya tak lepas dari kodrad
kami sebagai manusia biasa yang tak akan pernah luput dari kesalahan.
Kelompok I
BAB 1
PENDAHULUAN
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 sangat cepat, jika kita menggunanan list contigue dan melakukan
pencarian biner. akan tetapi, jika kita ingin melakukan perubahan isi list (insert atau
delete), menggunakan list contigue akan sangat lambat, karena 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 n-linked list, kita tidak bisa melakukan pointer
sembarangan setiap saat, kecuali hanya satu kali dengan kata lain hanya secara
sequential.
1.2 Permasalahan
Binary 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).
Dalam tree terdapat jenis-jenis tree yang memiliki sifat khusus, diantaranya adalah
binary tree.
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.
Binary Tree merupakan himpunan vertex-vertex yang terdiri dari 2 subtree
(dengan disjoint) yaitu subtree kiri dan subtree kanan. Setiap vertex dalam binary tree
mempunyai derajat keluar max = 2.
Contoh :
B C B B
(4) (5)
A A
B C D
B
E F
Bukan Binary Tree tapi Bukan Binary Tree tapi General Tree
General Tree karena bukan karena mempunyai derajat keluar > 2.
Sebuah pohon biner adalah grafik asiklis yang terhubung dimana setiap tingkatan
dari sudut tidak lebih dari 3. Ini dapat ditunjukan bahwa dalam pohon biner manapun,
terdapat persis dua atau lebih simpul dengan tingkat satu daripada yang terdapat dengan
tingkat tiga, tetapi bisa terdapat angka apa saja dari simpul dengan tingkat dua. Sebuah
pohon biner berakar merupakan sebuah grafik yang mempunyai satu dari sudutnya
dengan tingkat tidak lebih dari dua sebagai akar.
Dengan akar yang dipilih, setiap sudut akan memiliki ayah khusus, dan diatas dua
anak; bagaimanapun juga, sejauh ini terdapat keterbatasan informasi untuk membedakan
antara anak kiri atau kanan. Jika kita membuang keperluan yg tak terkoneksi,
membolehkan bermacam koneksi dalam komponen di gafik, kita memanggil struktur
sebuah hutan.
Sebuah jalan lain untuk mendefinisikan pohon biner melalui definisi rekursif pada
grafik langsung. Sebuah pohon biner dapat berarti:
Pohon biner dapat dikonstruksi dari bahasa pemrograman primitif dalam berbagai cara.
Dalam bahasa yang menggunakan records dan referensi, pohon biner secara khas
dikonstruksi dengan mengambil sebuah struktur simpul pohon yang memuat beberapa
data dan referensi ke anak kiri dan anak kanan.
Kadang-kadang itu juga memuat sebuah referensi ke ayahnya yang khas. JikA sebuah
simpul mempunyai kurang dari dua anak, beberapa penunjuk anak dapat diatur kedalam
nilai nol khusus, atau ke sebuah simpul sentinel.
Pohon biner dapat juga disimpan sebagai struktur data implisit dalam array, dan jika
pohon tersebut merupakan sebuah pohon biner lengkap, metode ini tidak boros tempat.
Dalam penyusunan yang rapat ini, jika sebuah simpul memiliki indeks i, anaknya dapat
ditemukan pada indeks ke-2i+1 dan 2i+2, meskipun ayahnya (jika ada) ditemukan pada
indeks lantai((i-1)/2) (asumsikan akarnya memiliki indeks kosong). Metode ini
menguntungkan dari banyak penyimpanan yang rapat dan memiliki referensi lokal yang
lebih baik, tersitimewa selama sebuah preorder traversal. Bagaimanapun juga, ini terlalu
mahal untuk perkembangannya dan boros tempat sebanding dengan 2h - n untuk sebuah
pohon dengan tinggi h dengan nsimpul.
Ini juga tidak menentukan susunan anak, tetapi memperbaiki akar tertentu.
Pada Binary Tree terdapat yang namanya simpul (node). Node pada binary tree
maksimum berjumlah 2n-1 dan jumlah maksimum pada setiap tingkat adalah 2n
A
Tingkat ke-0, jumlah max=2’
Penghitungan jumlah node dalam tree dilakukan dengan cara mengunjungi setiap
node, dimulai dari root ke subtree kiri, kemudian ke subtree kanan dan masing-masing
node dicatat jumlahnya, dan terakhir jumlah node yang ada di subtree kiri dijumlahkan
dengan jumlah node yang ada di subtree kanan ditambah 1 yaitu node root.
Node root dalam sebuah tree adalah suatu node yang memiliki hiarki tertinggi
dan dapat juga memiliki node-node anak. Semua node dapat ditelusuri dari node root
tersebut. Node root adalah node khusus yang tercipta pertama kalinya. Node-node lain
di bawah node root saling terhubung satu sama lain dan disebut subtree. Contoh
penggunaan struktur pohon adalah pada silsilah keluarga, hasil pertandingan yang
berbentuk turnamen, struktur organisasi dari sebuah perusahaan
1. Full Binary Tree yaitu semua node atau simpul (kecuali leaf) pasti memiliki 2 anak dan
tiap subtree memiliki panjang path yag sama.
B C
D E F G
2. 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.
A
B C
D E
3. Skewed Binary Tree yaitu binary tree yang semua nodenya (kecuali leaf) hanya memiliki
satu anak.
D
A
E
B
F
C
Pada operator-operator yang bekerja pada binary tree terdapat beberapa operator yang
memilki pendefenisian secara khusus, diataranya yaitu search, create, insert, transverse
dan delete yang akan dibahas dalm makalah ini.
Suatu binary search tree dari himpunan N record (N1, N2, N3 . . . Nn) adalah suatu
Binary Tree yang setiap vertex-nya (sebut Ri) ditempati oleh Ni untuk i=1,2,3 ... N.
Vertex-vertex dari Binary Tree tsb. diatur sedemikian rupa sehingga untuk setiap Ri harus
memenuhi syarat sbb :
1. Jika Rj = left (Ri) maka Nj < Ni
2. Jika Rj = right (Ri) maka Nj > Ni
Contoh :
Diketahui key dari 7 record (K, M, L, N, P, O, Q)
Binary Search Tree dari 7 key diatas dapat dibentuk :
K N
M K
L M
Trnsversal dalam binary tree
Transversal dakam binary tree adalah proses menelusuri suatu Binary Tree
sehingga sedemikian rupa setiap vertex dikunjungi hanya 1 kali.
1. Pre – Order-Transversal
Pre order Transversal adalah penelusuran yang dimulai dari semua simpul
induk kemudian melajutkan penelusuran pada anak simpul yang dimulai dari anak
simpul kiri kemudian anak simpul kanan.
1
2 7
3 6 8 9
4 5
2. In-Order-Transversal
In order transversal adalah penelusuran dimulai dari simpul anak disebelah kiri
kemudian penelusuran dilanjutkan pada simpul induk dan yang terakhir pada
simpul anak yang beradad di bagian kanan.
4 7
2 5 8 9
1 3
3. Post-Order-Transversal
Post Order Transversal adalah penelusuran dimulai dari simpul anak kiri
kemudian simpul anak kanan dan penelusuran terakhir ditujukan pada simpul
induk.
9
5 8
3 4 6 7
1 2
4. Level-Order-Transversal
Level Order Transversal adalah penelusuran dimulai dari tingkat ke i dan
dilanjutka pada tingkat ke ( i+1).
2 3
4 5 6 7
5
8 9
1.3 Tujuan
Adapun tujuan dari pembuatan makalah ini yaitu:
1. Untuk mengetahui defenisi dari Binary Tree
2. Untuk mengetahui bagaimana pembagian atau jenis-jenis Binary Tree
3. Untuk mengetahui Operator-operator apa saja yang bekerja di dalam Binary Tree.
BAB 2
TINJAUAN PUSTAKA
• 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.
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.
3. Decrease by a variable size: ukuran instans persoalan direduksi bervariasi pada setiap
iterasi algoritma.
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.
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 di dalamnya palsu).
Ukuran persoalan selalu berkurang dengan faktor setengah dari ukuran semula. Hanyasetengah bagian
yang diproses, setengah bagian yang lain tidak diproses.
0 ,n=1
T(n) =
1+T(n/2) ,n>1
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 root, akan masuk dan menempati
node di sebelah kanan node root.
Contoh program seederhana dalam binary tree :
#include<iostream.h>
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
struct node
{
int data;
node *left;
node *right;
};
node *tree=NULL;
node *insert(node *tree,int ele);
void main()
{
clrscr();
int ch,ele;
do
{
clrscr();
cout<<"\n\t\a\a1----INSERT A NODE IN A BINARY TREE.\a\a";
cout<<"\n\t\a\a2----PRE-ORDER TRAVERSAL.\a\a";
cout<<"\n\t\a\a3----IN-ORDER TRAVERSAL.\a\a";
cout<<"\n\t\a\a4----POST-ORDER TRAVERSAL.\a\a";
cout<<"\n\t\a\a5----EXIT.\a\a";
cout<<"\n\t\a\aENTER CHOICE::\a\a";
cin>>ch;
switch(ch)
{
case 1:
cout<<"\n\t\a\aENTER THE ELEMENT::\a\a";
cin>>ele;
tree=insert(tree,ele);
break;
case 2:
cout<<"\n\t\a\a****PRE-ORDER TRAVERSAL OF A TREE****\a\a";
preorder(tree);
break;
case 3:
cout<<"\n\t\a\a****IN-ORDER TRAVERSAL OF A TREE****\a\a";
inorder(tree);
break;
case 4:
cout<<"\n\t\a\a****POST-ORDER TRAVERSAL OF A TREE****\a\a";
postorder(tree);
break;
case 5:
exit(0);
}
}while(ch!=5);
}
4.1 Kesimpulan
Dari uraian pada pembahasan yang disajikan, maka dapat 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 subtree
memiliki 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.
4. Implementasi program yaitu dapat dibuat dengan menggunakan linked list secara
rekursif dan linked list yang digunakan adalah double linked list non circular.