Wednesday, March 11, 2020

Hash Table & Binary Tree at Data Structure

Hash Table & Binary Tree at Data Structure
Hashing
Hashing adalah teknik untuk mengubah atau mengconvert sebuah string karakters ke suatu key yang lebih singkat nilainya yang merepresentasikan string originalnya.
Hashing digunakan untuk mengambil items dari database karena lebih cepat untuk menemukan item menggunakan key atau kunci yang lebih pendek atau singkat.

Hash Table
Hash Table adalah tabel dalam bentuk array dimana kita menyimpan string original. Index pada tabel adalah key yang di hash.
Hash Function

Contoh:
Kita dapat lihat bahwa ada array index yang sama, oleh karena itu kita perlu melakukan Linear Probing.

Teknik Hashing ini sangat sering digunakan dalam bilang security, selain itu teknik ini juga digunakan oleh Teknologi Block Chain yang sangat populer sekarang ini. Block Chain digambarkan sebagai sebuah block yang menyimpan data, hash, dan hash of previous block. Ketiga tersebut diproteksi dengan menggunakan hash.
Binary Tree
Binary Tree adalah pohon yang memiliki paling banyak 2 anak (children).
What is a Binary Tree

Bahasa - bahasa dalam Tree:
                tree
                ----
level 0 -->       j    <-- root
                /   \
level 1 -->    f      k  <-- f & k adalah children dari j
             /   \      \
level 2--> a      h      z    <-- leaves  | a & h adalah children dari f
Contoh Source Code Dalam C:
struct node 
{
    int data;
    struct node *left;
    struct node *right;
};
  
/* newNode() mengalokasi memory untuk new node
dan mengisi child kanan dan kiri dengan NULL */
struct node* newNode(int data)
{
  // Mengalokasi memory untuk node baru 
  struct node* node = (struct node*)malloc(sizeof(struct node));
  
  // Memasukan data ke node
  node->data = data;
  
  // Menginisialisasi child kiri dan kanan dengan NULL
  node->left = NULL;
  node->right = NULL;
  return(node);
}
  
int main()
{
  /*membuat root atau akar*/
  struct node *root = newNode(81);
  
  /* gambaran tree yang terbentuk 
       81
      /   \
     NULL  NULL  
  */
  root->left        = newNode(27);
  root->right       = newNode(3);
  /* 27 dan 3 menjadi children dari 81
          81
         /   \
       27      3
     /    \    /  \
    NULL NULL NULL NULL
  */
    
  root->left->left  = newNode(9);
  /* 9 menjadi child dari 27
          81
       /       \
     27          3
    /   \       /  \
   9    NULL  NULL  NULL
  /  \
NULL NULL
*/
  getchar();
  return 0;
}
Source Code Dari: https://www.geeksforgeeks.org/binary-tree-set-1-introduction/
Referensi:
https://www.tutorialspoint.com/data_structures_algorithms/hash_data_structure.htm
https://binusmaya.binus.ac.id/newStudent/#/class/resources.COMP6048/010544/1920/CL/11725
https://visualgo.net/en/hashtable?slide=1
https://www.w3schools.in/data-structures-tutorial/binary-trees/
https://www.geeksforgeeks.org/binary-tree-data-structure/
https://www.w3schools.in/data-structures-tutorial/binary-trees/
https://www.geeksforgeeks.org/binary-tree-set-1-introduction/
http://cslibrary.stanford.edu/110/BinaryTrees.html

No comments:

Post a Comment