Tumpukan vs Heap
Stack adalah daftar terurut di mana penyisipan dan penghapusan item daftar hanya dapat dilakukan di satu ujung yang disebut atas. Karena alasan ini, tumpukan dianggap sebagai struktur data Last in First out (LIFO). Heap adalah struktur data khusus yang didasarkan pada pohon dan memenuhi properti khusus yang disebut properti heap. Selain itu, heap adalah pohon lengkap, yang berarti tidak ada celah antara daun pohon, yaitu di pohon lengkap setiap level diisi sebelum menambahkan level baru ke pohon dan node di level tertentu diisi dari kiri ke kanan.
Apa itu Stack?
Seperti yang disebutkan sebelumnya, tumpukan adalah struktur data di mana elemen ditambahkan dan dihapus hanya dari satu ujung yang disebut atas. Tumpukan hanya memungkinkan dua operasi dasar yang disebut push dan pop. Operasi push menambahkan elemen baru ke bagian atas tumpukan. Operasi pop menghapus elemen dari atas tumpukan. Jika tumpukan sudah penuh, saat operasi dorong dilakukan, ini dianggap sebagai tumpukan melimpah. Jika operasi pop dilakukan pada stack yang sudah kosong, ini dianggap sebagai stack underflow. Karena sejumlah kecil operasi yang dapat dilakukan pada tumpukan, ini dianggap sebagai struktur data yang dibatasi. Selain itu, menurut cara operasi push dan pop didefinisikan, jelas bahwa elemen yang ditambahkan terakhir ke tumpukan akan keluar dari tumpukan terlebih dahulu. Oleh karena itu tumpukan dianggap sebagai struktur data LIFO.
Apa itu Heap?
Seperti disebutkan sebelumnya, heap adalah pohon lengkap yang memenuhi properti heap. Properti heap menyatakan bahwa, jika y adalah simpul anak x maka nilai yang disimpan dalam simpul x harus lebih besar dari atau sama dengan nilai yang disimpan di simpul y (yaitu nilai (x) ≥ nilai (y)). Properti ini menyiratkan bahwa node dengan nilai terbesar akan selalu ditempatkan di root. Heap yang dibuat menggunakan properti ini disebut max-heap. Ada variasi lain dari properti heap yang menyatakan kebalikan dari ini. (yaitu nilai (x) ≤ nilai (y)). Ini menyiratkan bahwa node dengan nilai terkecil akan selalu ditempatkan di root, sehingga disebut min-heap. Ada berbagai macam operasi yang dilakukan pada heaps seperti menemukan minimum (dalam min-heaps) atau maksimum (dalam max-heaps), menghapus minimum (dalam min-heaps) atau maksimum (dalam max-heaps),meningkatkan (dalam max-heaps) atau menurunkan (dalam min-heaps) kunci, dll.
Apa perbedaan antara Stack dan Heap?
Perbedaan utama antara tumpukan dan tumpukan adalah bahwa meskipun tumpukan adalah struktur data linier, tumpukan adalah struktur data non linier. Tumpukan adalah daftar berurutan yang mengikuti properti LIFO, sedangkan heap adalah pohon lengkap yang mengikuti properti heap. Selain itu, tumpukan adalah struktur data terbatas yang hanya mendukung sejumlah operasi terbatas seperti push dan pop, sedangkan heap mendukung berbagai operasi seperti menemukan dan menghapus minimum atau maksimum, menambah atau mengurangi kunci dan menggabungkan.