Binary Tree
Binary Tree
BINARY TREE
DISUSUN OLEH :
1. Nadim Achmad
(105060 807111009)
2. Dzurratul Ulya
(105060807111120)
3. Safer Yusuf
(105060803111004 )
UNIVERSITAS BRAWIJAYA
KATA PENGANTAR
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
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-himpeunan 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 value 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 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
Pengertian Binary Tree
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 himpunanhimpunan 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 :
(1)
(2)
(3)
A
Derajat keluar = 2
(4)
(5)
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:
Sebuah graf yang dibentuk dengan mengambil dua pohon biner, menambahkan
sebuah sudut, dan menambahkan sebuah panah langsung dari sudut yang baru ke akar
daris setiap pohon biner.
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
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
Jenis-Jenis Binary Tree
Pada binary tree terdapat tiga jenis atau bentuk binary tree, diantaranya yaitu:
1. Full Binary Tree yaitu semua node atau simpul (kecuali leaf) pasti memiliki 2 anak dan
tiap subtree memiliki panjang path yag sama.
A
3. Skewed Binary Tree yaitu binary tree yang semua nodenya (kecuali leaf) hanya memiliki
satu anak.
D
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.
Contoh :
Diketahui key dari 7 record (K, M, L, N, P, O, Q)
Binary Search Tree dari 7 key diatas dapat dibentuk :
K
1
2
7
6
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.
6
7
5
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
3
8
4
4. Level-Order-Transversal
Level Order Transversal adalah penelusuran dimulai dari tingkat ke i dan
2
3
dilanjutka pada tingkat ke
( i+1).
4
55
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 subpersoalan 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.
Ukuran persoalan selalu berkurang dengan faktor setengah dari ukuran semula. Hanyasetengah bagian
yang diproses, setengah bagian yang lain tidak diproses.
,n=1
1+T(n/2)
,n>1
T(n) =
BAB 3
IMPLEMENTASI PROGAM
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 root, akan masuk dan menempati
node di sebelah kanan node root.
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);
}
node *insert(node *tree,int ele)
{
if(tree==NULL)
{
tree=new node;
tree->left=tree->right=NULL;
tree->data=ele;
count++;
}
else
if(count%2==0)
tree->left=insert(tree->left,ele);
else
tree->right=insert(tree->right,ele);
return(tree);
}
void preorder(node *tree)
{
if(tree!=NULL)
{
cout<<tree->data;
preorder(tree->left);
preorder(tree->right);
getch();
}
}
void inorder(node *tree)
{
if(tree!=NULL)
{
inorder(tree->left);
cout<<tree->data;
inorder(tree->right);
getch();
}
}
BAB 4
PENUTUP
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.
3. Terdapat beberapa operator-operator yang bekerja dalam binary tree yaitu
search,delete,insert,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.