Thursday, March 19, 2020

Binary Search Tree

Binary Search Tree

Pengertian

Sebelum masuk kedalam konsep Binary Search Tree, ada baiknya kita memahami konsep Tree itu sendiri. Tree adalah salah satu bentuk struktur data yang menggambarkan hubungan hierarki antar elemen-elemennya (relasi one to many). 
Lalu apa perbedaannya dengan Binary Search Tree? Binary Search Tree adalah tree yang memiliki maksimal 2 percabangan saja, dan terdapat beberapa aturan. Child node sebelah kiri selalu lebih kecil daripada root node. Child node sebelah kanan selalu lebih besar daripada rootnode. Binary Search Tree biasa dikenal sebagai Sorted Version of Binary Tree.
Image result for binary tree
Seperti pada gambar diatas, root node adalah 50, child node seblah kiri adalah 17, dan child node sebelah kanan adalah 76. Ini artinya child node sebelah kiri selalu lebih kecil dibandingkan root, dan child node kanan selalu lebih besar daripada root.

Operasi Binary Search Tree

Insert:

  1. Selalu dimulai dari root.
  2. Jika angka yang akan dimasukkan lebih kecil daripada sub tree, maka cek sebelah kiri dari sub tree. Bila kosong masukkan angka tersebut.
  3. Bila angka yang akan dimasukkan lebih besar daripada sub tree, maka cek sebelah kanan dari sub tree. Bila kosong, masukkan angka tersebut.
  4. Lakukan terus sampai menemukan node yang kosong untuk ditaruh sebuah nilai.

Deletion:

Untuk melakukan delete terdapat 3 situasi.
  1. Bila yang ingin dihapus di bagian leaf, dapat langsung dihapus. Pada gambar diatas, 12 dapat langsung dihapus.
  2. Bila yang akan dihapus memiliki satu child, hapus node tersebut dan gabungkan antara parent node tersebut dan child dari node tersebut. Pada gambar diatas, bila 72 dihapus, maka 54 menjadi parent 67.
  3. Bila yang akan dihapus memiliki dua child, cari sub tree bagian kiri kemudian dibandingkan dengan yang kanan. Pada gambar diatas, apabila angka 17 dihapus maka, angka 14 akan naik menggantikan posisi 17, angka 9 akan menjadi parent 12. Bila angka 50 yang dihapus, maka angka 23 akan naik menggantikan posisi 50, dann17 akan menjadi parent 19.
Refrensi:
Binus Maya

Tuesday, March 10, 2020

Hashing and Hash Table, Tree and Binary Tree

Materi Pembelajaran

  1. Hashing
  2. Hash Table
  3. Hash Function
  4. Collision
  5. Tree Intoduction
  6. Tree Concept
  7. Binary Tree Concept
  8. Type of Binary Tree
  9. Property of Binary Tree
  10. Expression Tree Concept
  11. Threaded Binary Tree Concept

1. Hashing

Hashing dapat diartikan sebagai teknik untuk menyimpan dan mengambil kunci dengan cepat. Biasanya ini juga dapat disebut sebagai proses memetakan sejumlah besar item data ke tabel yang lebih kecil. 

2. Hash Table

Hash Table merupakan sebuah struktur data yang terdiri atas sebuah tabel dan fungsi yang memiliki tujuan untuk memetakan nilai kunci yang unik untuk setiap record (baris) menjadi angka (hash) lokasi record tersebut dalam sebuah tabel. 
Keuntungan darhash table ini adalah waktu aksesnya yang cukup cepat. Namun pada kenyataannya sering sekali ditemukan hash table yang record-recordnya mempunyai angka hash yang sama (bertabrakan).
Operasi yang digunakan dalam Hash Table:
  1. insert = memasukkan nilai dalam tabel
  2. find= mencari nilai dalam tabel
  3. remove= mencari nilai dalam tabel, lalu dihapus
  4. getIterator= memeriksa nilai satu per satu

3. Hash Function

Ada banyak cara untuk mengaitkan string menjadi kunci. Berikut ini adalah beberapa metode untuk membangun fungsi hash:
1. Mid-square
Kuadratkan string lalu gunakan jumlah bit yang sesuai dari tengah kotak agar mendapatkan hash-key. Jika kuncinya adalah string, dikonversi ke angka.
2. Division
Membagi string dengan operator modulus. Metode hashing integer ini merupakan metode yang paling sederhana.
3. Folding
Partisi string atau identifier menjadi beberapa bagian, lalu tambahkan bagian bersama-sama untuk mendapatkan kunci hash.
4. Digit Extraction
Digit yang ditentukan sebelumnya dari nomor yang diberikan dianggap alamat hash.
5. Rotating Hash
Menggunakan metode hashing lalu ketika mendapatkan kode atau alamat hash dari metode tersebut,  maka lakukan rotasi. Rotasi dilakukan dengan menggeser digit untuk mendapatkan alamat hash baru.

4. Collision

Ada dua cara untuk melakukan Collision :
  1. Linear Probing, yaitu dengan mencari slot kosong berikutnya dan meletakkan string disana
  2. Chainning, yaitu memasukkan string ke dalam slot sebagai linked list.
Image result for chaining c++

5. Tree Concept

Image result for tree concept c++
  1. Node A disebut sebagai root atau akar.
  2. Garis yang menghubungkan induk ke anak adalah edge atau garis.
  3. Node yang tidak memiliki anak disebut daun. Contohnya node E, F, G, dan H
  4. Node memiliki orang tua yang sama disebut saudara. Contohnya node B.
  5. Derajat simpul adalah total sub pohon simpul.
  6. Tinggi atau kedalamanan tingkat maksimum node dalam pohon.
  7. Jika ada garis yang menghubungkan A ke B, maka A leluhurnya B, dan B adalah keturunan A.

6. Binary Tree Concept

Sama seperti rooted tree, namun setiap node memiliki 2 anak. Node yang tidak memiliki anak disebut daun.

7. Type of Binary Tree

Tipe-tipe Binary Tree:
1. Perfect Binary Tree= setiap level memiliki kedalaman yang sama.
Image result for perfect binary tree concept c++

2. Complete Binary Tree
Image result for complete binary tree concept c++
3. Skewed Binary Tree
Image result for skewed binary tree concept c++

8. Property of Binary Tree

1. Jumlah maksimum node pada k di binary tree adalah 2k
2. Jumlah maksimum node pada pohon biner tinggi h adalah 2h+1 - 1.
3. Tinggi minimum biner dari n node adalah 2log(n).
4. Tinggi maksimum biner dari n nide adalah n-1.

9. Expression Tree Concept

1. Prefix adalah metode penulisan dengan meletakkan operator di depan operand dan tanpa menulis tanda kurung (). Contoh pemakaian prefix adalah  +AB, – +ABC, * + AB – CD.
2. Infix adalah cara penulisan ungkapan dengan meletakkan operator diantara dua operand dalam hal ini pemakaian tanda kurung sangat menentukan hasil operasi (). Contoh pemakaian infix adalah 
A+B, A+B-C, (A+B)*(C-D).
3. Postfix adalah metode penulisan dengan menuliskan operator setelah operand dan tanpa menuliskan tanda kurung ().

10. Threaded Binary Tree Concept

Pohon biner berulir sama dengan pohon biner tetapi dengan perbedaan dalam menyimpan pointer NULL. Dalam representasi tertaut, sejumlah node berisi pointer NULL baik di bidang kanan atau kiri atau keduanya. Ruang yang terbuang untuk menyimpan tunjuk NULL ini dapat digunakan untuk menyimpan kedamaian informasi bermanfaat lainnya.
3.
Image result for threaded binary tree concept c++

Refrensi : 
  1. Binus Maya
  2. https://www.google.com/url?sa=i&url=http%3A%2F%2Fyoutubesusanqenglmichelle.changeip.com%2Fuse-of-threaded-binary-tree.html&psig=AOvVaw0M4-eHdsIUnMmAPob31jtB&ust=1583950331759000&source=images&cd=vfe&ved=0CA0QjhxqFwoTCNDYnPnAkOgCFQAAAAAdAAAAABAP
Nama : Isaac Andrean Yoshua
NIM   : 2301927046


Tuesday, March 3, 2020

Linked List (II)

Review Linked List

Perbedaan antara Single Linked List dengan Double Linked List

Single Linked List merupakan sekumpulan data data yang dihubungkan dengan satu pointer dalam satu elemen yang bergerak dari depan ke belakang, atau sebaliknya. Pada Single Linked List, data tidak bisa bergerak ke data sebelumnya, karena hanya memiliki satu tangan/ satu pointer. Berbeda dengan Double Linked List. Setiap data dihubungkan dengan dua pointer. Maksudnya adalah informasi data dapat dihubungkan ke data yang sebelumnya dan juga dapat dihubungkan ke data setelahnya. 
Image result for doubly linked list adalah
Seperti gambar diatas, informasi data  yang berisi sepuluh dapat saling berhubungan dengan data yang berisi lima dan data yang berisi lima belas.

Cara Insert dan Delete Data pada Single Linked List

Berikut ini adalah cara mendefinisikan sebuah Linked List dalam bahasa C++. 

Insert Front

Berikut ini adalah cara Insert /push Front. Insert Front adalah data yang baru masuk akan langsung menjadi head.

Maksud dari Push Front adalah bila ada data baru yang masuk, maka data tersebut akan menjadi head dalam rantai tersebut. Bila ada data yang berisi 10, 5, 4, 7 maka hasil dari push front akan menjadi 7, 4, 5 ,10 baru NULL.

Insert Back

Berikut adalah cara insert back atau push back.


Maksud dari Push Back adalah bila ada data baru yang masuk, maka data tersebut akan menjadi tail dalam rantai tersebut. Bila ada data yang berisi 10, 5, 4, 7 maka hasil dari push back adalah 10, 5, 4, 7 baru NULL.

Pop Front

Berikut adalah cara Delete/Pop Front 

Maksud dari Pop Front adalah menghapus data yang pertama dan menjadikan data ke dua sebagai head. Bila ada data yang berisi 10, 5, 4, 7 maka hasil dari pop front adalah 5, 4, 7 baru NULL.

Pop Back

Berikut adalah cara Delete/ Pop Back

Maksud dari Pop Back adalah menghapus data terakhir dan menjadikan data sebelum terakhir sebagai tail. Bila ada data yang berisi 10, 5, 4, 7 maka hasil pop back adalah 10, 5, 4 baru NULL.


Refrensi



Rangkuman Final Data Structure

Ringkasan Final Data Structure Data Structure Nama  :  Isaac Andrean Yoshua NIM  : 2301927046 Kelas : CB01-CL Lecturer : Ferdinand Ariandy L...