Skip to main content
DATA STRUCT


HEAP and TRIES



Binary Heap

Binary Heap adalah Complete Binary Tree di mana item disimpan dalam urutan khusus sedemikian sehingga nilai dalam simpul parent lebih besar (atau lebih kecil) dari nilai-nilai dalam dua node child-nya. Yang pertama disebut sebagai max heap dan yang terakhir disebut min heap. Heap dapat diwakili oleh binary tree atau array.

1) Max Heap 
Selalu menyimpan nilai maksimum pada simpul root dan setiap simpul induk harus memiliki nilai simpul child yang lebih besar atau sama.

2) Min Heap 

Selalu menyimpan nilai minimum pada simpul root itu dan setiap simpul induk harus memiliki nilai yang lebih kecil atau sama dengan nilai simpul child itu.

Heap Sort Algorithm untuk mengurutkan dalam urutan yang meningkat:
1. Buat tumpukan maksimum dari data input.

2. Pada titik ini, item terbesar disimpan di root heap. Ganti dengan item terakhir heap diikuti dengan mengurangi ukuran heap oleh 1.



Contoh di atas menunjukkan dua skenario - satu di mana root adalah elemen terbesar dan kita tidak perlu melakukan apa pun. Dan yang lain di mana root memiliki elemen yang lebih besar sebagai seorang anak dan kami perlu bertukar untuk mempertahankan properti max-heap.


Terdapat sebuah skenario dimana ada lebih dari satu level:
image showing tree data with root element containing two max-heap subtrees

Untuk mempertahankan properti max tree, terus mendorong 2 ke bawah hingga mencapai posisi yang benar.


steps to heapify root element when both of its subtrees are already max-heaps




TRIES

Trie adalah struktur data berupa pohon terurut untuk menyimpan suatu himpunan string dimana setiap node pada tree tersebut mengandung awalan (prefix) yang sama,
karena itulah trie disebut juga tree prefix. Trie sering digunakan pada masalah komputasi yang melibatkan penyimpanan dan pencarian string. Trie memiliki sejumlah keunggulan dibanding struktur data lain untuk memecahkan masalah serupa terutama dalam hal kecepatan dan memori yang digunakan. 


Setiap simpul Trie terdiri dari banyak cabang. Setiap cabang mewakili karakter kunci yang memungkinkan. Kita perlu menandai simpul terakhir dari setiap kunci sebagai simpul kata akhir.


Contoh Codingan Tries:

// Trie node
struct TrieNode
{
     struct TrieNode *children[ALPHABET_SIZE];

     // isEndOfWord is true if the node
     // represents end of a word
     bool isEndOfWord;
};
Dalam trie, tidak ada node yang menyimpan kunci yang terkait dengan node tersebut, sebaliknya, posisinya di pohon menunjukkan kunci apa yang terkait dengannya. Setiap keturunan dari sebuah node memiliki prefix yang sama dengan string yang diwakilkan oleh node tersebut, dan akar menandakan sebuah string kosong. 
Overview of Data Structures | Set 3 (Graph, Trie, Segment Tree and ...


























Comments

Popular posts from this blog

Data Structure Linked List (II) Circular Linked List  Circular Linked List adalah  Linked List  di mana semua node terhubung untuk membentuk lingkaran.  Tidak ada NULL di bagian akhir.  Circular Linked List  dapat berupa  Circular  Single Linked List atau  Circular  Doubly Linked List. Circular Doubly Linked List  Circular Doubly Linked List   adalah jenis yang lebih kompleks dari Linked List yang berisi pointer ke node berikutnya serta sebelumnya dalam urutan. Sama seperti dengan Circular Single Linked List, tetapi total pointer pada setiap node adalah 2 pointer. Doubly Linked List  Doubly Linked List  adalah elemen-elemen yang dihubungkan dengan dua pointer dalam satu elemen dan list dapat melintas baik di depan (head) atau belakang (tail). Doubly Linked List berisi pointer tambahan, biasanya disebut pointer sebelumnya, bersama dengan pointer berikutnya dan data yang ada di Single Linked List. Elemen-Elemen Dalam Doubly Linked List    -  Data - Pointer Next